如何使用Maven在特定包中运行所有测试?

Eri*_*son 51 java junit maven

我可以在Maven文档中找到它显示如何运行:

  1. 单一测试
  2. 所有测试都在一个测试类中进行
  3. 匹配特定模式的类中的所有测试

但是如何在包中运行所有测试?这可能吗?

我更喜欢不需要修改pom.xml或代码的解决方案.

Rob*_*bin 145

例如,您也可以使用模式

 mvn '-Dtest=de.mypackage.*Test' test
Run Code Online (Sandbox Code Playgroud)

从包de.mypackage结束的类中运行所有测试*Test.

[更新2017/12/18]:
由于这已成为公认的答案,以下是一些进一步的信息:

还有其他可能性,比如使用正则表达式,请参阅运行单个测试官方文档.

  • 你甚至可以做`mvn'-Dtest = de.mypackage.**.*测试'test`包括子包 (22认同)
  • 为我工作完美!mvn test -Dtest = com.example.handler.*测试 (2认同)
  • 在 Maven 3 中,当我不使用撇号 (') 时,它工作正常 (2认同)

Nul*_*ice 19

AFAIK没有用于surefire的命令行参数:test在特定包中运行测试.

我使用配置变量来实现相同的效果.我的pom.xml的一个片段:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.7.2</version>
            <configuration>
                <includes>
                    <include>**/${testGroup}/*Test.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

现在,如果我想在名为"com.example"的包中运行测试,我使用以下命令:

mvn test -DtestGroup=com/example
Run Code Online (Sandbox Code Playgroud)


O.B*_*adr 9

mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.*
Run Code Online (Sandbox Code Playgroud)

...如果要包含所有子包:

mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.**.*
Run Code Online (Sandbox Code Playgroud)


Rad*_*unj 6

您可以从以下情况中发挥作用:

(1)在Maven构建过程中跳过所有测试执行

mvn package -DskipTests
Run Code Online (Sandbox Code Playgroud)

(2)执行所有测试用例

mvn test
Run Code Online (Sandbox Code Playgroud)

(3)执行特定的测试组

mvn test -DincludeGroups=TestGroup1,TestGroup2
Run Code Online (Sandbox Code Playgroud)

(4)在执行过程中排除特定的测试组

mvn test -DexcludeGroups=TestGroup3,TestGroup4
Run Code Online (Sandbox Code Playgroud)

(5)执行特定的包测试用例

mvn test -Dtest="test.java.com.service.map.**"
Run Code Online (Sandbox Code Playgroud)

(6)执行特定测试

mvn test -Dtest=Test1,Test2
Run Code Online (Sandbox Code Playgroud)

希望通过不同的执行组合对您有所帮助。


And*_*ejs 5

O Badr 答案的 pom.xml 版本:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20.1</version>
                <configuration>
                    <includes>
                 <!-- includes all tests, but not in subpackages -->
                        <include>**/package1/*</include>   
                 <!-- includes all tests, AND in subpackages -->
                        <include>**/package2/**</include>
                    </includes>
                </configuration>
            </plugin>

        </plugins>
    </build>
Run Code Online (Sandbox Code Playgroud)