我想使用maven的Spring Boot测试集成功能。当我运行下一个命令时,我发现它没有按预期工作:
mvn clean install -DskipIntegrationTests=true
它开始运行集成测试但应该跳过它们。 我的问题是:
注意:我使用的是Spring Boot 1.4.0.RELEASE 我的POM:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<skipTests>${skipIntegrationTests}</skipTests>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
我的集成测试:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("development")
@SqlGroup({
@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:beforeTestRun.sql"),
@Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, scripts = "classpath:afterTestRun.sql")
})
public class AdminTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
public void get_all_admins() {
//TODO: code here
}
}
答案 0 :(得分:1)
您需要了解故障安全插件的工作原理。具体来说,它如何识别应该成为集成测试阶段一部分的测试:
http://maven.apache.org/surefire/maven-failsafe-plugin/examples/inclusion-exclusion.html
默认情况下,Failsafe插件会自动包含所有测试 具有以下通配符模式的类:
**/IT*.java
- 包括其所有子目录和所有Java 以“IT”开头的文件名。**/*IT.java
- 包括所有内容 子目录和以“IT”结尾的所有Java文件名。**/*ITCase.java
- 包括其所有子目录和所有Java 以“ITCase”结尾的文件名。如果测试类不遵循 任何这些命名约定,然后配置Failsafe插件和 指定要包含的测试。