Maven-failsafe-plugin:skipTests配置不适用于Spring Boot 1.4集成测试

时间:2016-08-23 17:13:42

标签: java maven spring-boot

我想使用maven的Spring Boot测试集成功能。当我运行下一个命令时,我发现它没有按预期工作:

mvn clean install -DskipIntegrationTests=true

它开始运行集成测试但应该跳过它们。 我的问题是:

  1. 如何使用maven控制集成测试执行?
  2. 我真的需要maven-failsafe-plugin吗?
  3. 注意:我使用的是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
        }
    }
    

1 个答案:

答案 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插件和   指定要包含的测试。