Tôi biết bạn có thể chạy tất cả các bài kiểm tra trong một lớp nhất định bằng cách sử dụng:
mvn test -Dtest=classname
Nhưng tôi muốn chạy một phương thức riêng lẻ và -Dtest = classname.methodname dường như không hoạt động.
Tôi biết bạn có thể chạy tất cả các bài kiểm tra trong một lớp nhất định bằng cách sử dụng:
mvn test -Dtest=classname
Nhưng tôi muốn chạy một phương thức riêng lẻ và -Dtest = classname.methodname dường như không hoạt động.
Câu trả lời:
Để chạy một phương thức thử nghiệm duy nhất trong Maven, bạn cần cung cấp lệnh như:
mvn test -Dtest=TestCircle#xyz test
TestCircle
tên lớp thử nghiệm ở đâu và xyz
là phương thức thử nghiệm.
Nhân vật thẻ hoang dã cũng hoạt động; cả trong tên phương thức và tên lớp.
Nếu bạn đang thử nghiệm trong một dự án đa mô-đun, hãy chỉ định mô-đun mà thử nghiệm nằm trong -pl <module-name>
.
Đối với thử nghiệm tích hợp sử dụng it.test=...
tùy chọn thay vì test=...
:
mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test
-pl <module-name>
.
-DfailIfNoTests=false
để bỏ qua các dự án mà không cần kiểm tra. No Tests Were Executed
xảy ra khi bạn cố chạy thử nghiệm từ dự án gốc và có các mô-đun mà không có kiểm tra nào cả.
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Lưu ý rằng "-DTest" bắt đầu bằng UPPER CASE 'T'.
Có một vấn đề với chắc chắn 2.12. Đây là những gì xảy ra với tôi khi thay đổi maven-Surefire-plugin từ 2.12 thành 2.11:
mvn test -Dtest=DesignRulesTest
Kết quả:
[ERROR] Không thể thực hiện mục tiêu org.apache.maven.plugins: maven-Surefire-plugin: 2.12 : test (default-test) trên dự án pmd: Không có thử nghiệm nào được thực hiện!
mvn test -Dtest=DesignRulesTest
Kết quả: [INFO] --- maven-Surefire-plugin: 2.11 : test (default-test) @ pmd --- ... Chạy net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest Thử nghiệm chạy: 5 , Lỗi: 0, Lỗi: 0, Bỏ qua: 4, Thời gian trôi qua: 4.009 giây
@Category(IntegrationTest.class)
, hãy sử dụng -Dit.test=ClassName
, nếu không bạn sẽ nhận được No tests were executed!
ngay cả với các phiên bản plugin mới nhất.
Những gì tôi làm với TestNG của mình, (xin lỗi, JUnit không hỗ trợ điều này) các trường hợp thử nghiệm là tôi có thể chỉ định một nhóm cho thử nghiệm mà tôi muốn chạy
@Test(groups="broken")
Và sau đó chỉ cần chạy 'mvn -Dgroups = hỏng'.
Chạy một tập hợp các phương thức trong Lớp thử nghiệm đơn Với phiên bản 2.7.3, bạn chỉ có thể chạy n thử nghiệm trong một Lớp thử nghiệm duy nhất.
LƯU Ý: nó được hỗ trợ cho Junit 4.x và TestNG.
Bạn phải sử dụng cú pháp sau
mvn -Dtest=TestCircle#mytest test
Bạn cũng có thể sử dụng các mẫu
mvn -Dtest=TestCircle#test* test
Kể từ Surefire 2.12.1, bạn có thể chọn nhiều phương thức (chỉ JUnit4X tại thời điểm này, bản vá chào mừng)
mvn -Dtest=TestCircle#testOne+testTwo test
Kiểm tra liên kết này về các bài kiểm tra đơn
Bạn có thể chạy (các) lớp thử nghiệm cụ thể và (các) phương thức bằng cú pháp sau:
gói đầy đủ: mvn test -Dtest = "com.oracle.tests. **"
tất cả phương thức trong một lớp: mvn test -Dtest = CLASS_NAME1
phương thức duy nhất từ lớp đơn: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1
nhiều phương thức từ nhiều lớp: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2
Lệnh này hoạt động !!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Lưu ý rằng "-DTest" bắt đầu bằng UPPER CASE 'T'.
Các bài kiểm tra tham số được đề cập bởi tobrien phép bạn chỉ định một phương pháp sử dụng một # trước tên phương pháp. Điều này sẽ làm việc cho JUnit và TestNG. Tôi chưa bao giờ thử nó, chỉ cần đọc nó trên trang Surefire Plugin :
Chỉ định tham số này để chạy thử nghiệm riêng lẻ theo tên tệp, ghi đè các tham số bao gồm / loại trừ. Mỗi mẫu bạn chỉ định ở đây sẽ được sử dụng để tạo một mẫu bao gồm được định dạng như ** / $ {test} .java, vì vậy bạn chỉ cần nhập "-Dtest = MyTest" để chạy thử nghiệm duy nhất có tên là "foo / MyTest.java". Tham số này ghi đè các tham số bao gồm / loại trừ và tham số TestNG suiteXmlFiles. kể từ 2.7.3 Bạn có thể thực thi một số phương thức giới hạn trong thử nghiệm bằng cách thêm #myMethod hoặc # my * ethod. Loại Si "-Dtest = MyTest # myMethod" được hỗ trợ cho Junit 4.x và testNg
Các phiên bản mới của JUnit chứa trình chạy Danh mục: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
Nhưng quy trình phát hành của JUnit không dựa trên maven, vì vậy người dùng maven phải đặt thủ công vào kho của họ.
Kể từ phiên bản plugin chắc chắn 2.22.1 (có thể sớm hơn), bạn có thể chạy thử nghiệm đơn bằng cách sử dụng thuộc tính testnames khi sử dụng testng.xml
Đưa ra một testng.xml sau
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="all-tests">
<classes>
<class name="server.Atest"/>
<class name="server.Btest"/>
<class name="server.Ctest"/>
</classes>
</test>
<test name="run-A-test">
<classes>
<class name="server.Atest"/>
</classes>
</test>
<test name="run-B-test">
<classes>
<class name="server.Btest"/>
</classes>
</test>
<test name="run-C-test">
<classes>
<class name="server.Ctest"/>
</classes>
</test>
</suite>
với tệp pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
[...]
<properties>
<selectedTests>all-tests</selectedTests>
</properties>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<suiteXmlFiles>
<file>src/test/resources/testng.xml</file>
</suiteXmlFiles>
<properties>
<property>
<name>testnames</name>
<value>${selectedTests}</value>
</property>
</properties>
</configuration>
</plugin>
</plugins>
[...]
</project>
Từ dòng lệnh
mvn clean test -DselectedTests=run-B-test
Đọc thêm - Maven Surefire plugin sử dụng testng
Bạn có thể chạy một lớp thử nghiệm, nhưng không phải là một phương thức trong một lớp thử nghiệm. Bạn sử dụng tên đơn giản của lớp chứ không phải tên đủ điều kiện của lớp. Vì vậy, nếu bạn có một bài kiểm tra trong "org.sonatype.test.MyTest" và đó là bài kiểm tra duy nhất bạn muốn chạy, dòng lệnh của bạn sẽ như thế này:
mvn test -Dtest=MyTest
Theo hiểu biết của tôi, plugin chắc chắn không cung cấp bất kỳ cách nào để làm điều này. Nhưng hãy thoải mái mở một vấn đề :)
mvn test -Dtest=classname
cú pháp.