programing

메이븐을 사용하여 단일 테스트 방법 실행

yoursource 2022. 8. 10. 22:52
반응형

메이븐을 사용하여 단일 테스트 방법 실행

다음 명령을 사용하여 특정 클래스의 모든 테스트를 실행할 수 있습니다.

mvn test -Dtest=classname

그러나 개별 메서드와 -Dtest=classname을 실행하고 싶습니다.methodname이 작동하지 않는 것 같습니다.

Maven에서 단일 테스트 방법을 실행하려면 다음과 같은 명령을 제공해야 합니다.

mvn test -Dtest=TestCircle#xyz test

서 ''는TestCircle과 "" 입니다.xyz테스트 방법입니다.

와일드카드 문자는 메서드명과 클래스명 모두 기능합니다.

테스트하는 경우 합니다.-pl <module-name>.

의 경우는, 「」를 사용합니다.it.test=... option 。test=...:

mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test

Surefire 2.12에 문제가 있습니다.maven-sure-fire-plugin을 2.12에서 2.11로 변경하면 다음과 같이 됩니다.

  1. mvn test -Dtest=DesignRulesTest

    ★★★★★★★★★★★★★★★
    [오류] 목표 org.apache.maven을 실행하지 못했습니다.플러그인:maven-surefire-plugin:2.12:프로젝트 pmd의 테스트(기본 테스트): 테스트가 실행되지 않았습니다!

  2. mvn test -Dtest=DesignRulesTest

    결과: [INFO] --- maven-surefire-plugin: 2.11: test (기본 테스트)@ pmd ---...인터넷 실행 중.sourceforge.pmd.syslog.rule.design을 지정합니다.Design Rules Test 테스트 실행: 5, 장애: 0, 오류: 0, 건너뛰기: 4, 경과시간: 4.009초

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

단일 테스트에 대한링크 확인

다음 구문을 사용하여 특정 테스트클래스 및 메서드를 실행할 수 있습니다.

  1. 전체 패키지 : mvn test -Dtest="com.oracle.tests"입니다.**"

  2. 클래스의 모든 메서드: mvn test -Dtest=CLASS_NAME1

  3. 단일 클래스의 단일 메서드:mvn test -Dtest=CLASS_NAME1#METOD_NAME1

  4. 다중 클래스의 다중 메서드: mvn test -Dtest=CLASS_NAME1#METOD_NAME1, CLASS_NAME2#METOD_NAME2

★★★★★★★★★★★★★★★★★★★★★★★!! mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test"-로 합니다. "-DTest"는 "T"로 시작합니다.

테스트 클래스에서 단일 테스트 방법을 실행합니다.

mvn test -Dtest=Test1#methodname


기타 관련 사용 사례

  • mvn test // Run all the unit test classes

  • mvn test -Dtest=Test1 // Run a single test class

  • mvn test -Dtest=Test1,Test2 // Run multiple test classes

  • mvn test -Dtest=Test1#testFoo* // Run all test methods that match pattern 'testFoo*' from a test class.

  • mvn test -Dtest=Test1#testFoo*+testBar* // Run all test methods match pattern 'testFoo*' and 'testBar*' from a test class.

이 스레드에 있는 몇 가지 솔루션을 시도했지만 다른 모듈에 의존하는 모듈에서는 작동하지 않았습니다.그 경우 나는 도망쳐야 했다.mvnroot-module에서 추가 파라미터를 지정합니다.-am(--also-make)는 테스트모듈이 의존하고 있는 모듈 및-DfailIfNoTests=false그렇지 않으면 "No tests were executed!" 오류가 나타납니다.

mvn test -pl B -Dtest=MyTestClass#myTest -am -DfailIfNoTests=false

pom.xml 섹션은 다음과 같습니다.

<modules>
    <module>A</module>
    <module>B</module>
<modules>

B는 A에 의존합니다.

tobrien에서 언급된 테스트 파라미터를 사용하면 메서드 이름 앞에 #를 사용하여 메서드를 지정할 수 있습니다.이것은 JUnit 및 TestNG로 동작합니다.한 번도 써본 적이 없으니 Surefire 플러그인 페이지에서 읽어보세요.

포함/제외 매개 변수를 재정의하여 파일 이름으로 개별 테스트를 실행하려면 이 매개 변수를 지정합니다.여기서 지정한 각 패턴은 **/${test}와 같은 형식의 포함 패턴을 생성하는 데 사용되므로 "-Dtest=MyTest"를 입력하여 "foo/MyTest.java"라는 단일 테스트를 실행할 수 있습니다.이 파라미터는 includes/excludes 파라미터 및 TestNG suiteXmlFiles 파라미터를 덮어씁니다.2.7.3 시험에서는 #myMethod 또는 #my*ethod를 추가하여 제한된 수의 방법을 실행할 수 있습니다.si 타입 "-Dtest=MyTest#myMethod"는 junit 4.x 및 testNg에서 지원됩니다.

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

자세한 내용 - 테스트를 사용한 Maven surefire 플러그인

먼저 메이븐 프로젝트를 청소해야 합니다.

mvn clean

특정 파일 및 기능을 실행할 수 있습니다.

mvn test -Dtest=testClassName#testCaseName

실행할 JUnit 테스트 클래스와 메서드를 지정해야 합니다.

mvn test -Dtest=com.mycompany.AppTest#testMethod

https://metamug.com/article/java/build-run-java-maven-project-command-line.html#running-unit-tests

단일 테스트 클래스를 실행할 수 있지만 테스트 클래스 내에서 단일 메서드는 실행할 수 없습니다.클래스의 완전 수식 이름이 아닌 단순 이름을 사용합니다.따라서 "org.sonatype.test"에서 테스트가 있는 경우.MyTest"에서 실행하는 유일한 테스트입니다.커맨드 라인은 다음과 같습니다.

mvn test -Dtest=MyTest

언급URL : https://stackoverflow.com/questions/1873995/run-a-single-test-method-with-maven

반응형