代码之家  ›  专栏  ›  技术社区  ›  ErikMD

Cobertura+Failsafe:即使集成测试失败,也要继续“mvn清理站点”

  •  1
  • ErikMD  · 技术社区  · 6 年前

    maven-failsafe-plugin (以便在中运行集成测试 *IT.java *Test.java cobertura-maven-plugin

    问题是 mvn clean site 如果集成测试失败,则无法得出结论,而 如果单元测试失败就可以了。

    为了重现这一点,我首先添加了一个 src/test/java/app/FailingTest.java

    package app;
    
    import org.junit.Test;
    
    import static org.junit.Assert.fail;
    
    public class FailingTest {
    
        @Test
        public void failingTest () {
            fail();
        }
    }
    

    mvn洁净场地

    ...
    [INFO] -------------------------------------------------------
    [INFO]  T E S T S
    [INFO] -------------------------------------------------------
    [INFO] Running app.FailingTest
    [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.063 s <<< FAILURE! - in app.FailingTest
    [ERROR] failingTest(app.FailingTest)  Time elapsed: 0.005 s  <<< FAILURE!
    java.lang.AssertionError
        at app.FailingTest.failingTest(FailingTest.java:11)
    ...
    [INFO] Cobertura Report generation was successful.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    

    然后我把这个类改名为 src/test/java/app/FailingIT.java 产量:

    ...
    [INFO] -------------------------------------------------------
    [INFO]  T E S T S
    [INFO] -------------------------------------------------------
    [INFO] Running app.FailingIT
    [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.031 s <<< FAILURE! - in app.FailingIT
    [ERROR] failingTest(app.FailingIT)  Time elapsed: 0.005 s  <<< FAILURE!
    java.lang.AssertionError
        at app.FailingIT.failingTest(FailingIT.java:11)
    ...
    [INFO] --- maven-failsafe-plugin:2.22.1:verify (default) @ example-project ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.example</groupId>
        <artifactId>example-project</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>example-project</name>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.16.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-rest</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-rest-hal-browser</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-validation</artifactId>
            </dependency>
    
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <!-- This is needed for the failsafe plugin, cf. https://stackoverflow.com/a/42128153/9164010 -->
                    <configuration>
                        <classifier>exec</classifier>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.22.1</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>integration-test</goal>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>
                    <!-- This is needed to avoid a compilation error, cf. below -->
                    <configuration>
                        <useSystemClassLoader>false</useSystemClassLoader>
                    </configuration>
                </plugin>
                <!-- This is needed to avoid a compilation error, cf. https://stackoverflow.com/a/50661649/9164010 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                    <configuration>
                        <useSystemClassLoader>false</useSystemClassLoader>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
        <reporting>
            <plugins>
                <!-- This is needed to avoid a compilation error, cf. https://stackoverflow.com/a/51099913/9164010 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>2.9</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jxr-plugin</artifactId>
                    <version>2.5</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>cobertura-maven-plugin</artifactId>
                    <version>2.7</version>
                </plugin>
            </plugins>
        </reporting>
    </project>
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Naman    6 年前

    它是 maven-failsafe-plugin pom.xml 作为:

    <goal>integration-test</goal>
    

    如果测试真的是集成测试( 美国犹他州 )但仍要修复它:)

    另一种消除此错误的糟糕方法是在 pom.xml文件