maven - JUnit:默认选择性地不运行一些测试用例

标签 maven junit

是否可以在构建时默认运行某些 JUnit 测试用例?

目标:

我们有两种测试用例:

  • “单元测试”
  • “集成测试”(测试直至数据库的完整路径)

在构建服务器上,我们不希望运行集成测试(数据库不可用等)。但是,应该运行单元测试。目前,我们通过在 CM 中注释掉集成测试并由开发人员根据需要启用来实现这一目标。

这是一个麻烦的安排。我们想要的是默认情况下,告诉 Maven 仅运行单元测试。我认为实现这一点的一种方法是将集成测试保存在一个单独的包中,该包不是默认构建的一部分。但是,这将使测试目标代码和测试用例在物理上分离,并且通常会随着时间的推移而变得不同步。

有什么好的解决办法吗?

最佳答案

您可以在 pom.xml 中使用不同的配置文件。默认情况下,您排除集成测试。

<plugin>
     <artifactId>maven-surefire-plugin</artifactId>
     <groupId>org.apache.maven.plugins</groupId>
     <version>2.9</version>
     <configuration>
         <skip>false</skip>
         <useFile>false</useFile>
         <argLine>-Xms1024m -Xmx1024m -XX:MaxPermSize=512m</argLine>
         <excludes>
             <exclude>**/*IntegrationTest.java</exclude>
         </excludes>
     </configuration>
</plugin>

<profiles>
    <profile>
        <id>integration-test-builder</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <groupId>org.apache.maven.plugins</groupId>
                    <version>2.9</version>
                    <configuration>
                        <skip>false</skip>
                        <useFile>false</useFile>
                        <argLine>-Xms1024m -Xmx1024m -XX:MaxPermSize=512m</argLine>
                        <excludes>
                            <exclude>none</exclude>
                        </excludes>
                        <includes>
                            <include>**/*IntegrationTest.java</include>
                        </includes>
                    </configuration>
                    <executions>
                        <execution>
                            <id>integration-tests</id>
                            <phase>integration-test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>    
</profiles>

要运行集成测试,您只需执行以下操作:mvn clean集成测试-P集成测试构建器

关于maven - JUnit:默认选择性地不运行一些测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22940571/

相关文章:

Maven 许可

maven-pdf-plugin:如何定义文档根以使用相对引用

android - Eclipse 中的 RoboLectric 和 Android(警告 : no system properties value for ro. build.date.utc)

java - Spring测试数据库回滚

java - JUnit @Parameterized 函数在测试套件中的@BeforeClass 之前运行?

java - 如何在 maven 安装上创建 source.jar

java - Maven:系统范围依赖的NoClassDefFoundError

java - 如何从使用 JUnit 4 的 Before 和 After 注释进行注释的方法中排除执行持续时间

java - 如何为下面的类编写junit测试用例

maven - 如何清除 teamcity 的 Maven 依赖库/缓存