Maven 2 如何在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中,您会有如下内容(免责声明,这是未经测试的): 我努力解决了这个问题,我创建了一个额外的配置文件,以便在我只想运行一

我们在maven中为集成测试阶段的生命周期定义了数百个测试,它们需要很长时间才能完成

我想做的是在集成测试中只运行一个测试。我试着做:

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