Tôi muốn chạy các trường hợp thử nghiệm JUnit từ dòng lệnh. Tôi có thể làm cái này như thế nào?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
đã làm cho tôi. Lưu ý dấu chấm kết thúc - nó quan trọng!
Tôi muốn chạy các trường hợp thử nghiệm JUnit từ dòng lệnh. Tôi có thể làm cái này như thế nào?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
đã làm cho tôi. Lưu ý dấu chấm kết thúc - nó quan trọng!
Câu trả lời:
Đối với JUnit 5.x, đó là:
java -jar junit-platform-console-standalone-<version>.jar <Options>
Tìm một bản tóm tắt ngắn gọn tại https://stackoverflow.com/a/52373592/1431016 và thông tin chi tiết đầy đủ tại https://junit.org/junit5/docs/civerse/user-guide/#ricky-tests-console-launcher
Đối với JUnit 4.X, nó thực sự:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Nhưng nếu bạn đang sử dụng JUnit 3.X thì lưu ý tên lớp là khác nhau:
java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]
Bạn có thể cần thêm nhiều JAR hoặc thư mục với các tệp lớp của mình vào đường dẫn lớp và phân tách chúng bằng dấu chấm phẩy (Windows) hoặc dấu hai chấm (UNIX / Linux). Nó phụ thuộc vào môi trường của bạn.
Chỉnh sửa: Tôi đã thêm thư mục hiện tại làm ví dụ. Phụ thuộc vào môi trường của bạn và cách bạn xây dựng ứng dụng của mình (có thể là bin / hoặc build / hoặc thậm chí my_application.jar, v.v.). Lưu ý Java 6+ không hỗ trợ các khối trong đường dẫn lớp, bạn có thể làm:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
Hy vọng nó giúp. Viết bài kiểm tra! :-)
Cách Maven
Nếu bạn sử dụng Maven, bạn có thể chạy lệnh sau để chạy tất cả các trường hợp thử nghiệm của mình:
mvn clean test
Hoặc bạn có thể chạy thử nghiệm cụ thể như dưới đây
mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
Nếu bạn muốn xem theo dõi ngăn xếp (nếu có) trong bảng điều khiển thay vì các tệp báo cáo trong thư mục đích \ Surefire-báo cáo, hãy đặt thuộc tính người dùng Surefire.useFile thành false. Ví dụ:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Cách tốt nghiệp
Nếu bạn sử dụng Gradle, bạn có thể chạy lệnh sau để chạy tất cả các trường hợp thử nghiệm của mình:
gradle test
Hoặc bạn có thể chạy thử nghiệm cụ thể như dưới đây
gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
Nếu bạn muốn biết thêm thông tin, bạn có thể xem xét các tùy chọn như --stacktrace hoặc --info hoặc --debug.
Ví dụ: khi bạn chạy Gradle với mức ghi nhật ký thông tin --info, nó sẽ hiển thị cho bạn kết quả của từng bài kiểm tra trong khi chúng đang chạy. Nếu có bất kỳ ngoại lệ, nó sẽ hiển thị cho bạn dấu vết ngăn xếp, chỉ ra vấn đề là gì.
gradle test --info
Ví dụ: nếu bạn muốn xem kết quả kiểm tra tổng thể, bạn có thể mở báo cáo trong trình duyệt (Mở nó bằng Google Chrome trong Ubuntu):
google-chrome build/reports/tests/index.html
Cách kiến
Khi bạn thiết lập tệp xây dựng tệp Ant build build, bạn có thể chạy các trường hợp kiểm tra JUnit của mình từ dòng lệnh như dưới đây:
ant -f build.xml <Your JUnit test target name>
Bạn có thể theo liên kết bên dưới để đọc thêm về cách định cấu hình các bài kiểm tra JUnit trong tệp xây dựng Ant: https://ant.apache.org/manual/T task /junit.html
Cách thông thường
Nếu bạn không sử dụng Maven, hoặc Gradle hoặc Ant, bạn có thể làm theo cách sau:
Trước hết, bạn cần biên dịch các trường hợp thử nghiệm của bạn. Ví dụ: (trong Linux):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java
Sau đó chạy trường hợp thử nghiệm của bạn. Ví dụ:
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
Câu trả lời mà @lzap đưa ra là một giải pháp tốt. Tuy nhiên, tôi muốn thêm rằng bạn nên thêm. đến đường dẫn lớp, để thư mục hiện tại của bạn không bị bỏ sót, dẫn đến các lớp của riêng bạn bị bỏ qua. Điều này đã xảy ra với tôi trên một số nền tảng. Vì vậy, một phiên bản cập nhật cho JUnit 4.x sẽ là:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Đảm bảo rằng JUnit.jar nằm trong đường dẫn lớp của bạn, sau đó gọi trình chạy dòng lệnh từ bảng điều khiển
java org.junit.runner.JUnitCore [tên lớp kiểm tra]
Tham khảo: Câu hỏi thường gặp
Với JUnit 4.12, những điều sau đây không phù hợp với tôi:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Rõ ràng , từ JUnit 4.11 trở đi, bạn cũng nên đưa hamcrest-core.jar
vào đường dẫn lớp của mình:
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]
Trong cửa sổ nó là
java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[tên lớp kiểm tra không có phần mở rộng. Class]
ví dụ:
c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
v.v., nếu một người có nhiều hơn một lớp kiểm tra.
-cp là viết tắt của đường dẫn lớp và dấu chấm (.) đại diện cho đường dẫn lớp hiện có trong khi dấu hai chấm (;) nối thêm tệp đã cho vào đường dẫn lớp, như trong ví dụ trên, Junit-4.8.2 hiện có sẵn trong đường dẫn lớp để thực thi lớp JUnitCore ở đây chúng tôi đã sử dụng để thực hiện các lớp kiểm tra của chúng tôi.
Câu lệnh dòng trên giúp bạn thực hiện các bài kiểm tra Junit (phiên bản 4+) từ dấu nhắc lệnh (tức là MSDos).
Lưu ý: JUnitCore là một mặt tiền để thực hiện các bài kiểm tra Junit, mặt tiền này được bao gồm trong hơn 4 phiên bản của Junit.
Nếu dự án của bạn dựa trên Maven, bạn có thể chạy tất cả các phương thức kiểm tra từ CustomTest của lớp kiểm tra thuộc mô-đun 'mô-đun của tôi' bằng cách sử dụng lệnh tiếp theo:
mvn clean test -pl :my-module -Dtest=CustomTest
Hoặc chỉ chạy 1 phương thức thử nghiệm myMethod từ CustomTest của lớp thử nghiệm bằng lệnh tiếp theo:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
Để có khả năng này, bạn cần Plugin Maven Surefire v.2.7.3 + và Junit 4. Chi tiết khác có tại đây: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
Ngoài ra, bạn có thể sử dụng các phương thức sau trong lớp JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html
chạy (với Request, Class class và Runner) hoặc runClass từ tệp java của bạn.
Nếu dự án của bạn dựa trên kiến thì bạn sẽ có thể làm một cái gì đó như thế này từ bảng điều khiển:
ant test
Nếu điều này không hiệu quả, nhưng dự án của bạn vẫn dựa trên kiến, bạn có thể chạy ant -p
để liệt kê các mục tiêu chính của dự án.