使用testng提供程序在surefire中禁用junit执行

时间:2014-08-06 11:07:09

标签: maven testng surefire

我们有一个混合的testng / junit(3和4)项目,并已配置maven有两个万不得已的执行;一个用于junit,一个用于testng。

我注意到在surefire 2.15和2.16(和2.17)之间,我们的testng提供程序也开始执行我们的一些junit测试。所以,我一直在撞墙试图找出一种方法来说服testng跑步者根本不进行junit测试(因为它显然有问题做得很好)。根据testng文档,它应该遵守junit = false配置或相应的testng.junit系统属性。所以我一直试图说服surefire传递那个配置,没有运气。

下面是我的surefire配置,有三种尝试传递此属性。第一次执行只执行junit(548次测试)。第二次执行执行15次testng测试(太棒了!)然后执行另外240次junit测试(不是全部测试)。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.17</version>
            <configuration>
                <includes>
                    <include>**/*Test.java</include>
                    <include>**/*Test.groovy</include>
                    <include>**/*TestSuite.java</include>
                    <include>**/*TestSuite.groovy</include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <id>default-test</id>
                    <phase>test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <testNGArtifactName>none:none</testNGArtifactName>
                        <junitArtifactName>junit:junit</junitArtifactName>
                    </configuration>
                </execution>
                <execution>
                    <id>testngonly</id>
                    <phase>test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <argLine>-Dtestng.junit=false</argLine>
                        <systemPropertyVariables>
                          <testng.junit>false</testng.junit>
                        </systemPropertyVariables>
                        <configuration>
                          <properties>
                            <property>
                              <name>junit</name>
                              <value>false</value>
                            </property>
                            <property>
                              <name>verbose</name>
                              <value>true</value>
                            </property>
                          </properties>
                        </configuration>
                        <junitArtifactName>none:none</junitArtifactName>
                        <testNGArtifactName>org.testng:testng</testNGArtifactName>
                    </configuration>
                </execution>
            </executions>
        </plugin>

我怀疑原因是修复了SUREFIRE-1019(https://jira.codehaus.org/browse/SUREFIRE-1019)TestNG提供程序无法执行JUnit4测试,它打算让它运行junit,除非它们似乎忘记了禁用该选项行为。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

maven-surefire-plugin中曾经存在一个错误 - 当有包含TestNG和JUnit测试的项目时,它只执行TestNG测试。 bug中有一条评论说你可以分别使用junitArtifactName或testNgArtifactName跳过JUnit或TestNG测试。                                                                 org.apache.maven.plugins                     Maven的万无一失,插件                     2.15                                                                                                        测试TestNG的                             测试                                                              测试                                                                                           无:无                                                                                                                       

供参考:http://jira.codehaus.org/browse/SUREFIRE-377