Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何在Maven 2中的两个测试套件之间切换?_Unit Testing_Maven_Junit_Integration Testing_Maven Surefire Plugin - Fatal编程技术网

Unit testing 如何在Maven 2中的两个测试套件之间切换?

Unit testing 如何在Maven 2中的两个测试套件之间切换?,unit-testing,maven,junit,integration-testing,maven-surefire-plugin,Unit Testing,Maven,Junit,Integration Testing,Maven Surefire Plugin,我们正在使用来运行Java测试。测试分为两类: 快速测试 慢测试 整个“快速”套件在几秒钟内运行,而慢速测试需要半小时 在开发过程中,我只想运行快速测试。当我提交时,我希望能够运行慢速测试,因此运行慢速测试应该是一个选项,而快速测试应该是默认选项 在CI服务器上,我想同时运行这两个 当慢测试包括快测试时,这是可以的(甚至更可取) 我应该如何为此场景设置Maven、JUnit和Surefire?您应该使用JUnit中的类别: 第一个解决方案 至少配置2.11版本的maven surefire插

我们正在使用来运行Java测试。测试分为两类:

  • 快速测试
  • 慢测试
整个“快速”套件在几秒钟内运行,而慢速测试需要半小时

在开发过程中,我只想运行快速测试。当我提交时,我希望能够运行慢速测试,因此运行慢速测试应该是一个选项,而快速测试应该是默认选项

在CI服务器上,我想同时运行这两个

当慢测试包括快测试时,这是可以的(甚至更可取)


我应该如何为此场景设置Maven、JUnit和Surefire?

您应该使用JUnit中的类别:

第一个解决方案

至少配置2.11版本的maven surefire插件

     <profile>
                    <id>normal</id>
                    <activation>
                            <activeByDefault>true</activeByDefault>
                    </activation>
                    <build>
                            <plugins>
                                    <plugin>
                                            <groupId>org.apache.maven.plugins</groupId>
                                            <artifactId>maven-surefire-plugin</artifactId>
                                            <configuration>
                                                    <excludedGroups>com.test.SlowTests</excludedGroups>
                                            </configuration>
                                    </plugin>
                            </plugins>
                    </build>
            </profile>

正常的
真的
org.apache.maven.plugins
maven surefire插件
com.test.SlowTests
第二种解决方案

在“配置”部分中,您可以添加带有文件的正则表达式以仅支持类(默认配置):


**/*Test*.java
**/*Test.java
**/*TestCase.java

在我自己从头开始做的一个商业项目中,我根据运行测试时使用的Surefire和Failsafe插件策略,将测试分为单元(我称之为
*Test.java
)和集成(
*IT.java
)。当然,它的运行速度比UTs慢得多

这提供了使用简单命令运行测试组的能力:
mvn test
用于UTs和
mvn integration test
用于UTs和ITs,以及使用
mvn install-DskipITs
仅跳过ITs的可能性

还有一个好处是,集成测试结果可能会更松散,因为它们比单元测试失败的频率更高,这是因为环境问题(例如,数据库启动时间太长,MessageBroker过早关闭,等等)。默认情况下,故障保护测试失败不会终止构建,除非明确包含“验证”目标:


org.apache.maven.plugins
maven故障保护插件
2.6
集成测试
集成测试
           <configuration>
                <includes>
                    <include>**/*Test*.java</include>
                    <include>**/*Test.java</include>
                    <include>**/*TestCase.java</include>
                </includes>
            </configuration>