다음을 사용하여 특정 클래스에서 모든 테스트를 실행할 수 있다는 것을 알고 있습니다.
mvn test -Dtest=classname
그러나 개별 메서드를 실행하고 싶습니다 -Dtest = classname.methodname이 작동하지 않는 것 같습니다.
다음을 사용하여 특정 클래스에서 모든 테스트를 실행할 수 있다는 것을 알고 있습니다.
mvn test -Dtest=classname
그러나 개별 메서드를 실행하고 싶습니다 -Dtest = classname.methodname이 작동하지 않는 것 같습니다.
답변:
Maven에서 단일 테스트 방법을 실행하려면 다음과 같이 명령을 제공해야합니다.
mvn test -Dtest=TestCircle#xyz test
여기서 TestCircle
테스트 클래스 이름 xyz
은 테스트 방법입니다.
와일드 카드 문자도 작동합니다. 메소드 명과 클래스 명 모두.
다중 모듈 프로젝트에서 테스트하는 경우 테스트가 포함 된 모듈을 지정하십시오 -pl <module-name>
.
통합 테스트의 경우 다음 it.test=...
대신 옵션을 사용하십시오 test=...
.
mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test
-pl <module-name>
.
-DfailIfNoTests=false
테스트없이 프로젝트를 건너 뛰는 데 사용 합니다. No Tests Were Executed
루트 프로젝트에서 테스트를 실행하려고 시도하고 테스트가없는 모듈이있을 때 발생합니다.
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
"-DTest"는 대문자 CAS 'T'로 시작합니다.
surefire 2.12에 문제가 있습니다. 이것은 maven-surefire-plugin을 2.12에서 2.11로 변경하면 발생합니다.
mvn test -Dtest=DesignRulesTest
결과 :
[오류] 프로젝트 pmd에서 목표 org.apache.maven.plugins : maven-surefire-plugin : 2.12 : test (기본 테스트) 를 실행하지 못했습니다 : 테스트가 실행되지 않았습니다!
mvn test -Dtest=DesignRulesTest
결과 : [정보] --- maven-surefire-plugin : 2.11 : test (기본 테스트) @ pmd --- ... 실행 중 net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest 테스트 실행 : 5 , 실패 : 0, 오류 : 0, 건너 뛰기 : 4, 경과 시간 : 4.009 초
@Category(IntegrationTest.class)
하면을 사용 -Dit.test=ClassName
하고 그렇지 않으면 No tests were executed!
최신 플러그인 버전을 사용할 수 있습니다.
TestNG로 수행하는 작업 (죄송합니다, JUnit은 이것을 지원하지 않습니다) 테스트 사례는 실행하려는 테스트에 그룹을 할당 할 수 있다는 것입니다
@Test(groups="broken")
그런 다음 'mvn -Dgroups = broken'을 실행하십시오.
단일 테스트 클래스에서 메소드 세트 실행 버전 2.7.3에서는 단일 테스트 클래스에서 n 개의 테스트 만 실행할 수 있습니다.
참고 : junit 4.x 및 TestNG에서 지원됩니다.
다음 구문을 사용해야합니다
mvn -Dtest=TestCircle#mytest test
패턴도 사용할 수 있습니다
mvn -Dtest=TestCircle#test* test
surefire 2.12.1부터 여러 방법을 선택할 수 있습니다 (현재 JUnit4X, 패치는 환영합니다)
mvn -Dtest=TestCircle#testOne+testTwo test
단일 테스트에 대한 이 링크를 확인하십시오
다음 구문을 사용하여 특정 테스트 클래스 및 메소드를 실행할 수 있습니다.
전체 패키지 : mvn test -Dtest = "com.oracle.tests. **"
클래스의 모든 메소드 : mvn test -Dtest = CLASS_NAME1
단일 클래스의 단일 메소드 : mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1
여러 클래스의 여러 메소드 : mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2
이 명령은 작동합니다 !!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
"-DTest"는 대문자 CAS 'T'로 시작합니다.
테스트 tobrien 언급 매개 변수는 당신이 사용하는 방법을 지정할 수 있습니다 #을 메소드 이름 앞에합니다. 이것은 JUnit 및 TestNG에서 작동합니다. 나는 그것을 시도하지 않았습니다, 그냥 Surefire 플러그인 페이지 에서 읽으십시오 :
포함 / 제외 매개 변수를 대체하여 파일 이름으로 개별 테스트를 실행하려면이 매개 변수를 지정하십시오. 여기서 지정한 각 패턴은 ** / $ {test} .java와 같은 형식의 포함 패턴을 작성하는 데 사용되므로 "-Dtest = MyTest"를 입력하여 "foo / MyTest.java"라는 단일 테스트를 실행할 수 있습니다. 이 매개 변수는 include / excludes 매개 변수 및 TestNG suiteXmlFiles 매개 변수를 대체합니다. 2.7.3부터 #myMethod 또는 # my * ethod를 추가하여 테스트에서 제한된 수의 메소드를 실행할 수 있습니다. junit 4.x 및 testNg에 대해 Si 유형 "-Dtest = MyTest # myMethod"지원
JUnit의 새 버전에는 카테고리 러너가 포함되어 있습니다. http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
그러나 JUnit의 릴리스 절차는 maven을 기반으로하지 않으므로 maven 사용자는 수동으로 저장소에 저장해야합니다.
surefire 플러그인 버전 2.22.1 (아마 이전 버전)부터 testng.xml을 사용할 때 testnames 속성을 사용하여 단일 테스트를 실행할 수 있습니다
다음 testng.xml이 주어지면
<?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>
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>
명령 행에서
mvn clean test -DselectedTests=run-B-test
mvn test -Dtest=classname
구문을 사용할 수 있습니다 .