ฉันมีการทดสอบ JUnit ต่อไปนี้ใน eclipse:
package test;
import org.junit.Test;
public class SimpleJUnitTest
{
@Test
public void doTest() { System.out.println("Test did run"); }
}
และ build.xml ต่อไปนี้ในโฟลเดอร์เดียวกัน:
<?xml version="1.0" encoding="UTF-8"?>
<project name="LoggerTest" default="JUnitTest" basedir=".">
<target name="JUnitTest">
<junit>
<classpath location="../../lib/junit.jar" />
<test name="test.SimpleJUnitTest" />
</junit>
<echo>boo</echo>
</target>
</project>
ถ้าฉันรันคลาสทดสอบภายใต้ "Run As..." และเลือก JUnit คลาสก็จะทำงานโดยไม่มีข้อผิดพลาด หากฉันรัน build.xml ภายใต้ "Run As..." และเลือก Ant Build ฉันจะได้ผลลัพธ์ต่อไปนี้:
Buildfile: C:\Users\995868\workspace\JUnit1\tst\test\build.xml
JUnitTest:
[junit] Test test.SimpleJUnitTest FAILED
[echo] boo BUILD SUCCESSFUL Total time: 390 milliseconds
หากฉันลบแอตทริบิวต์ classpath ภายใต้ JUnit ฉันจะได้รับข้อความแสดงข้อผิดพลาดอื่นเกี่ยวกับการต้องการ junit jar บน classpath ดังนั้นฉันคิดว่า JUnit กำลังถูกเรียกใช้ ฉันแค่ไม่เข้าใจว่ามันเกิดข้อผิดพลาดอะไรที่นี่ ฉันได้ลองใส่รหัสบล็อกแบบคงที่ในชั้นเรียนเพื่อทำ System.out.println()
เมื่อคลาสถูกโหลด แต่มันไม่ปรากฏขึ้น ดูเหมือนว่าจะมีบางอย่างที่ฉันทำผิดในการกำหนดค่า
ใครช่วยบอกฉันหน่อยได้ไหมว่ามีอะไรผิดปกติที่นี่
แก้ไข:
directory structure:
JUnit1
--bin
--test
--SimpleJUnitTest
--lib
--junit.jar
--scripts
--build.xml
--src
--tst
--test
--SimpleJUnitTest.java
ฉันยังคัดลอก build.xml ไปยัง tst และรันจากบรรทัดคำสั่งจากไดเร็กทอรีนั้นด้วย ผลลัพธ์เดียวกัน
ฉันได้คัดลอก junit.jar ไปที่ %ant_home%\lib โดยไม่มีผลกระทบ แต่เมื่อฉันนำบรรทัด pathelement ออกจาก classpath ฉันได้รับข้อความ "The for must include junit.jar if not in Ant's own classpath" ฉันไม่แน่ใจว่าระบุ "classpath ของ Ant" ไว้ที่ใด บล็อก classpath ที่มีข้อความแสดงข้อผิดพลาดใหม่คือ:
<classpath>
<pathelement location="c:/users/995868/apache-ant-1.9.4/lib" />
<pathelement location="../bin" />
</classpath>
ฉันไม่ได้ใช้ฟีเจอร์ hamcrest เลย ดังนั้นฉันจึงไม่ได้ค้นหาและใส่มันลงไป ฉันกำลังพยายามสร้างตัวอย่างง่ายๆ และเอกสารประกอบสำหรับ junit ภายใต้ ant (อย่างน้อย) ไม่ได้ระบุว่าจำเป็นต้องมี hamcrest