ฉันต้องการเรียกใช้กรณีทดสอบ JUnit จากบรรทัดคำสั่ง ฉันจะทำสิ่งนี้ได้อย่างไร
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
ทำงานให้ฉัน สังเกตจุดสิ้นสุด - มันสำคัญ!
ฉันต้องการเรียกใช้กรณีทดสอบ JUnit จากบรรทัดคำสั่ง ฉันจะทำสิ่งนี้ได้อย่างไร
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
ทำงานให้ฉัน สังเกตจุดสิ้นสุด - มันสำคัญ!
คำตอบ:
สำหรับJUnit 5.xมันคือ:
java -jar junit-platform-console-standalone-<version>.jar <Options>
ค้นหาสรุปโดยย่อได้ที่https://stackoverflow.com/a/52373592/1431016และรายละเอียดทั้งหมดได้ที่https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher
สำหรับJUnit 4.Xจริงๆแล้ว:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
แต่ถ้าคุณใช้JUnit 3.Xโปรดทราบว่าชื่อคลาสแตกต่างกัน:
java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]
คุณอาจต้องเพิ่ม JARs หรือไดเรกทอรีเพิ่มเติมด้วยไฟล์คลาสของคุณไปยัง classpath และแยกด้วย Semicolons (Windows) หรือ colons (UNIX / Linux) มันขึ้นอยู่กับสภาพแวดล้อมของคุณ
แก้ไข: ฉันได้เพิ่มไดเรกทอรีปัจจุบันเป็นตัวอย่าง ขึ้นอยู่กับสภาพแวดล้อมของคุณและวิธีสร้างแอปพลิเคชั่นของคุณ (สามารถเป็น bin / หรือ build / หรือแม้แต่ my_application.jar ฯลฯ ) หมายเหตุ Java 6+ รองรับ globs ใน classpath คุณสามารถทำได้:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
หวังว่ามันจะช่วย เขียนแบบทดสอบ! :-)
ทาง Maven
หากคุณใช้ Maven คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อเรียกใช้กรณีทดสอบทั้งหมด:
mvn clean test
หรือคุณสามารถเรียกใช้การทดสอบเฉพาะด้านล่าง
mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
หากคุณต้องการดูการติดตามสแต็ก (ถ้ามี) ในคอนโซลแทนไฟล์รายงานในโฟลเดอร์เป้าหมาย \ surefire-reports ให้ตั้งค่าคุณสมบัติผู้ใช้ surefire.useFile เป็น false ตัวอย่างเช่น:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
วิธีการไล่ระดับสี
หากคุณใช้ Gradle คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อเรียกใช้กรณีทดสอบทั้งหมด:
gradle test
หรือคุณสามารถเรียกใช้การทดสอบเฉพาะด้านล่าง
gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
หากคุณต้องการข้อมูลเพิ่มเติมคุณสามารถพิจารณาตัวเลือกเช่น --stacktrace หรือ --info หรือ --debug
ตัวอย่างเช่นเมื่อคุณรัน Gradle ด้วยระดับการบันทึกข้อมูล - ข้อมูลจะแสดงผลลัพธ์ของการทดสอบแต่ละรายการในขณะที่กำลังรัน หากมีข้อยกเว้นใด ๆ มันจะแสดงสแต็กการติดตามให้คุณทราบว่าปัญหาคืออะไร
gradle test --info
หากคุณต้องการดูผลการทดสอบโดยรวมคุณสามารถเปิดรายงานในเบราว์เซอร์ได้ (เปิดโดยใช้ Google Chrome ใน Ubuntu):
google-chrome build/reports/tests/index.html
วิธีมด
เมื่อคุณตั้งค่า Ant build file build.xml แล้วคุณสามารถรัน JUnit test cases จากบรรทัดคำสั่งดังต่อไปนี้:
ant -f build.xml <Your JUnit test target name>
คุณสามารถไปที่ลิงก์ด้านล่างเพื่ออ่านเพิ่มเติมเกี่ยวกับวิธีกำหนดค่าการทดสอบ JUnit ในไฟล์ Ant build: https://ant.apache.org/manual/Tasks/junit.html
วิธีปกติ
หากคุณไม่ได้ใช้ Maven หรือ Gradle หรือ Ant คุณสามารถทำตามวิธีต่อไปนี้:
ก่อนอื่นคุณต้องรวบรวมกรณีทดสอบของคุณ ตัวอย่าง (ใน Linux):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java
จากนั้นเรียกใช้กรณีทดสอบของคุณ ตัวอย่างเช่น:
java -cp /absolute/path/for/compiled/classes:/absolute/path/to/junit-4.12.jar:/absolute/path/to/hamcrest-core-1.3.jar org.junit.runner.JUnitCore your.package.TestClassName
คำตอบที่ @lzap ให้นั้นเป็นทางออกที่ดี อย่างไรก็ตามฉันต้องการเพิ่มที่คุณควรเพิ่ม ไปที่คลาสพา ธ เพื่อไม่ให้ไดเรกทอรีปัจจุบันของคุณค้างอยู่ส่งผลให้คลาสของคุณถูกทิ้ง สิ่งนี้เกิดขึ้นกับฉันในบางแพลตฟอร์ม ดังนั้นเวอร์ชันที่อัปเดตสำหรับ JUnit 4.x จะเป็น:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
ตรวจสอบให้แน่ใจว่า JUnit.jar อยู่ใน classpath ของคุณจากนั้นเรียกใช้ command line runner จากคอนโซล
java org.junit.runner.JUnitCore [ชื่อคลาสทดสอบ]
การอ้างอิง: คำถามที่พบบ่อย Junit
ด้วย JUnit 4.12 สิ่งต่อไปนี้ใช้ไม่ได้สำหรับฉัน:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
เห็นได้ชัดว่าจาก JUnit 4.11 เป็นต้นไปคุณควรรวมhamcrest-core.jar
ไว้ใน classpath ของคุณ:
java -cp .:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]
java -cp .:/usr/share/java/junit4.jar org.junit.runner.JUnitCore [test class name]
ใน windows มันเป็น
java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[ชื่อคลาสทดสอบที่ไม่มีนามสกุล. class]
ตัวอย่างเช่น:
c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
และอื่น ๆ หากมีมากกว่าหนึ่งคลาสทดสอบ
-cpย่อมาจากคลาสพา ธ และจุด (.) แสดงถึง classpath ที่มีอยู่ในขณะที่เซมิโคลอน (;) ผนวก jar ที่กำหนดเพิ่มเติมให้กับ classpath ดังตัวอย่างข้างต้น junit-4.8.2 มีอยู่ใน classpath เพื่อเรียกใช้คลาส JUnitCore ที่ ที่นี่เราใช้ในการรันคลาสทดสอบของเรา
ข้อความสั่งบรรทัดคำสั่งด้านบนช่วยให้คุณสามารถทำการทดสอบ junit (รุ่น 4 ขึ้นไป) จากพรอมต์คำสั่ง (เช่น MSDos)
หมายเหตุ: JUnitCore เป็นส่วนหน้าสำหรับการทดสอบ Junit อาคารนี้รวมอยู่ในรุ่น Junit 4+ รุ่น
ที่จริงแล้วคุณสามารถทำให้ Junit ทดสอบ runnable Jar และเรียก jar ที่รันได้เป็น java -jar
หากโครงการของคุณใช้ Maven คุณสามารถเรียกใช้วิธีทดสอบทั้งหมดจาก CustomTest ซึ่งเป็นของโมดูล 'my-module' โดยใช้คำสั่งถัดไป:
mvn clean test -pl :my-module -Dtest=CustomTest
หรือเรียกใช้เพียงหนึ่งวิธีทดสอบ myMethod จาก CustomTest ทดสอบระดับโดยใช้คำสั่งถัดไป:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
สำหรับความสามารถนี้คุณต้องใช้ Maven Surefire Plugin v.2.7.3 + และ Junit 4 รายละเอียดเพิ่มเติมอยู่ที่นี่: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
โดยส่วนตัวฉันจะใช้นักวิ่ง Javen ของ Maven ที่จะทำเช่นนั้น
หรือคุณสามารถใช้วิธีการต่อไปนี้ในคลาส JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html
run (พร้อม Request คลาส Class และ Runner) หรือ runClasses จากไฟล์ java ของคุณ
หากโครงการของคุณมีพื้นฐานมาจากมดคุณควรจะทำสิ่งนี้ได้จากคอนโซล:
ant test
หากสิ่งนี้ไม่ได้ผล แต่โครงการของคุณยังมีพื้นฐานมาจาก ant คุณสามารถเรียกใช้ant -p
เพื่อแสดงรายการเป้าหมายหลักของโครงการ