maven故障安全插件需要能够区分单元测试和集成测试。似乎在使用JUnit时,一种分离测试的方法是使用JUnit @Categories注释。此博客文章介绍了如何使用junit http://www.agile-engineering.net/2012/04/unit-and-integration-tests-with-maven.html
执行此操作@Category(IntegrationTest.class)
public class ExampleIntegrationTest{
@Test
public void longRunningServiceTest() throws Exception {
}
}
如何使用TestNG和Maven故障安全插件完成相同的操作。我想在测试类上使用注释将它们标记为集成测试。
答案 0 :(得分:2)
这可以添加到测试中。
@IfProfileValue(name="test-profile", value="IntegrationTest")
public class PendingChangesITCase extends AbstractControllerIntegrationTest {
...
}
要选择要执行的测试,只需将值添加到配置文件以执行集成测试。
<properties>
<test-profile>IntegrationTest</test-profile>
</properties>
如果选择的maven配置文件没有属性值,则不会执行集成测试。
答案 1 :(得分:1)
我们使用maven-surefire-plugin进行单元测试,使用maven-failsafe-plugin进行集成测试。他们都很好地与Sonar融为一体。
答案 2 :(得分:0)
看起来我已经迟到了这个派对,但对于未来的googlers,我通过以下方式让它工作:
使用您选择的组名称注释相关的测试类:
@Test(groups='my-integration-tests')
public class ExampleIntegrationTest {
@Test
public void someTest() throws Exception {
}
}
告诉surefire插件(运行正常的单元测试阶段)忽略集成测试:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludedGroups>my-integration-tests</excludedGroups>
</configuration>
</plugin>
告诉failafe插件(运行集成测试)只关心你的组。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.20</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>**/*.java</includes>
<groups>my-integration-tests</groups>
</configuration>
</plugin>