我正在尝试使用JUnit和概要文件的@Category
注释来拆分集成测试和冒烟测试。因此,如果我运行mvn clean install -P smoke-tests
,只执行烟雾测试,如果我运行mvn clean install
,每个测试都运行。
问题是:
当我用<excludeGroups>
排除Maven中的组时,它会按预期排除组。但是当我尝试将它们包含在<groups>
中时,它仍然运行每个测试。Maven代码没什么特别的:
<profile>
<id>smoke-tests</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.12</version>
<configuration>
<parallel>classes</parallel>
<threadCount>4</threadCount>
<perCoreThreadCount>false</perCoreThreadCount>
<!-- <excludeGroups>de.package.SmokeTest</excludeGroups> -->
<groups>de.package.SmokeTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
当然,我可以通过使用<include>
和<exclude>
来解决这个问题,但我真的很想使用@Category
注释。
任何帮助都是感激的。
这是一个在2.12.1中修复的错误:JUnit类别只有在显式设置junit47 provider时才能工作。如果你不能升级,显式地指定一个junit提供者,它应该可以工作:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
<configuration>
<groups>uk.co.farwell.test.SlowTests</groups>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.12</version>
</dependency>
</dependencies>
</plugin>