Maven 2 如何在maven中的集成测试目标中运行单个测试
我们在maven中为集成测试阶段的生命周期定义了数百个测试,它们需要很长时间才能完成 我想做的是在集成测试中只运行一个测试。我试着做:Maven 2 如何在maven中的集成测试目标中运行单个测试,maven-2,integration-testing,maven-surefire-plugin,Maven 2,Integration Testing,Maven Surefire Plugin,我们在maven中为集成测试阶段的生命周期定义了数百个测试,它们需要很长时间才能完成 我想做的是在集成测试中只运行一个测试。我试着做: mvn -Dtest=<my-test> integration-test 我不确定JUnit,但对于TestNG来说,策略是定义一个只有一个测试的套件XML文件,然后在POM中配置surefire插件以仅运行该测试。在您的POM中,您会有如下内容(免责声明,这是未经测试的): 我努力解决了这个问题,我创建了一个额外的配置文件,以便在我只想运行一
mvn -Dtest=<my-test> integration-test
我不确定JUnit,但对于TestNG来说,策略是定义一个只有一个测试的套件XML文件,然后在POM中配置surefire插件以仅运行该测试。在您的POM中,您会有如下内容(免责声明,这是未经测试的):
我努力解决了这个问题,我创建了一个额外的配置文件,以便在我只想运行一个集成测试时使用。我希望我在这里成功地提取了正确的部分:
<profile>
<id>integrationTestSingle</id>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>surefire-it</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes>
<include>**/integration/**/${test}.java</include>
</includes>
<skipTests>false</skipTests>
</configuration>
</execution>
</executions>
<configuration>
<argLine>-Xms256M -Xmx768M -XX:MaxPermSize=256M</argLine>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>default-test</id>
<configuration>
<skipTests>true</skipTests>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
integrationTestSingle
maven surefire插件
当然可以
集成测试
测试
**/集成/**/${test}.java
假的
-Xms256M-Xmx768M-XX:MaxPermSize=256M
maven surefire插件
默认测试
真的
现在,我使用integrationTestSingle概要文件和-DfailIfNoTests=false-Dtest=NameOfTest
调用maven,它在常规“测试”阶段不运行任何常规测试,而在集成测试阶段只运行NameOfTest
测试,通过将it.test
属性设置为完全限定的测试类名,可以运行单个集成测试:
mvn -Dit.test=your.TestCase verify
请参阅。您可以这样指定测试:
mvn -Dit.test=BrokenIT verify
但是,-Dit.test似乎不再有效。相反,用于指定Surefire测试的相同参数显然也适用于故障保护。例如:
mvn -Dtest=WorksIT verify
我已经提交了一份(编辑:,在2.12中被关闭为“无法复制”)来更正文档。我自己刚刚遇到了这个问题。像这样的事情对我很有效:
mvn -Pintegration-test -Dtest=<my-test>
mvn-pinintegration测试-Dtest=
诀窍是确保在-Dtest部分之前提到测试组。只需添加-DfailIfNoTests=false
就可以使用testNG。大概是这样的:
mvn integration-test -Dtest=aITest -DfailIfNoTests=false
我刚刚在我的项目上做了这个,它成功了。你有没有可能在pom上发布surefire插件部分?org.apache.maven.plugins maven surefire plugin surefire it集成测试无**/api/**…我无法发布完整内容,因为限制。但这就是问题的要点。你可以把它作为问题的一部分发布。只是出于兴趣,如果删除排除和包含部分会发生什么。除此之外,你的配置和我的一样,我同意詹姆斯的看法。TestNG适用于此,但我认为最好使用TestNG组:@Test(groups={“slow_Test”})然后在您的TestNG套件中:然后您可以始终包括/排除特定组这在2013-07-26插件版本2.15和Maven 3.1.0上对我有效,不管其他答案如何。另一个答案似乎是一个bug.verified for mvn 3.2.5,plugin 2.18。运行一个集成测试:mvn integration test-Dit.test=MyClassIT但是,它也运行单元测试:mvn verify-Dit.test=MyClassIT。注意,这可能仍然会运行单元测试。若要关闭单元测试的执行,请参阅。无法触发初始化测试环境的生成帮助程序maven插件。@okwap这听起来像是项目和插件设置的特定内容,而不是故障保护/集成测试问题。
mvn -Pintegration-test -Dtest=<my-test>
mvn integration-test -Dtest=aITest -DfailIfNoTests=false