我们有一个混合的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,除非它们似乎忘记了禁用该选项行为。
我在这里缺少什么?
答案 0 :(得分:0)
maven-surefire-plugin中曾经存在一个错误 - 当有包含TestNG和JUnit测试的项目时,它只执行TestNG测试。 bug中有一条评论说你可以分别使用junitArtifactName或testNgArtifactName跳过JUnit或TestNG测试。 org.apache.maven.plugins Maven的万无一失,插件 2.15 测试TestNG的 测试 测试 无:无