Maven 故障安全不读取集成测试的 environmentVariables 配置
Maven failsafe doesn't read environmentVariables config for integration tests
我的 Maven 构建包括单元和集成测试执行,作为 2 个独立的配置文件,使用 Jacoco 进行代码覆盖。
我在使用 failsafe 插件时遇到了一些问题,需要一个方向来寻找解决方案。我已经浏览了大量可用的内容,但仍无法解决问题。
<environmentVariables>
不适用于 failsafe,而它适用于 surefire。我已经尝试了 <systemProperties>
、<systenPropertiesVariables>
、<properties>
中的所有方法;但是 none 似乎可以为我的集成测试用例设置环境变量。
使用 <excludes>
的测试用例排除不适用于故障保护;万无一失的地方。
我的故障保护配置是:
<profile>
<id>it-coverage</id>
<build>
<plugins>
<!-- MAVEN Failsafe plugin. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<argLine>${failsafeArgLine}</argLine>
<environmentVariables>
<config>config/preferences.xml</config>
<log4jproperties>config/log4j.properties</log4jproperties>
<jacoco-agent.destfile>target/it-jacoco.exec</jacoco-agent.destfile>
</environmentVariables>
<excludes>
<exclude>**/*UTest.java</exclude>
</excludes>
<includes>
<include>**/*ITest.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
嗯,我的问题已经解决了。
我将 surefire-plugin 和 failsafe-plugin 添加到我的集成配置文件中,一切都开始就绪。
以下是对我有用的配置。
<profile>
<id>it-coverage</id>
<build>
<plugins>
<!-- MAVEN Failsafe plugin. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.20.1</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- Sets the VM argument line used when unit tests are run. -->
<argLine>${failsafeArgLine}</argLine>
<systemPropertyVariables>
<config>${config.preferences}</config>
<log4jproperties>${config.log4jproperties}</log4jproperties>
<!-- <jacoco-agent.destfile>target/it-jacoco.exec</jacoco-agent.destfile> -->
<jacoco-agent.destfile>${sonar.jacoco.itReportPath}</jacoco-agent.destfile>
</systemPropertyVariables>
<includes>
<include>**/*ITest.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!-- MAVEN Jacoco plugin -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<excludes>
<exclude>**/*UTest.java</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>default-instrument</id>
<goals>
<goal>instrument</goal>
</goals>
</execution>
<execution>
<id>default-restore-instrumented-classes</id>
<goals>
<goal>restore-instrumented-classes</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.agent</artifactId>
<classifier>runtime</classifier>
<version>${jacoco.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</profile>
我的 Maven 构建包括单元和集成测试执行,作为 2 个独立的配置文件,使用 Jacoco 进行代码覆盖。
我在使用 failsafe 插件时遇到了一些问题,需要一个方向来寻找解决方案。我已经浏览了大量可用的内容,但仍无法解决问题。
<environmentVariables>
不适用于 failsafe,而它适用于 surefire。我已经尝试了<systemProperties>
、<systenPropertiesVariables>
、<properties>
中的所有方法;但是 none 似乎可以为我的集成测试用例设置环境变量。使用<excludes>
的测试用例排除不适用于故障保护;万无一失的地方。
我的故障保护配置是:
<profile>
<id>it-coverage</id>
<build>
<plugins>
<!-- MAVEN Failsafe plugin. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<argLine>${failsafeArgLine}</argLine>
<environmentVariables>
<config>config/preferences.xml</config>
<log4jproperties>config/log4j.properties</log4jproperties>
<jacoco-agent.destfile>target/it-jacoco.exec</jacoco-agent.destfile>
</environmentVariables>
<excludes>
<exclude>**/*UTest.java</exclude>
</excludes>
<includes>
<include>**/*ITest.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
嗯,我的问题已经解决了。 我将 surefire-plugin 和 failsafe-plugin 添加到我的集成配置文件中,一切都开始就绪。
以下是对我有用的配置。
<profile>
<id>it-coverage</id>
<build>
<plugins>
<!-- MAVEN Failsafe plugin. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.20.1</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- Sets the VM argument line used when unit tests are run. -->
<argLine>${failsafeArgLine}</argLine>
<systemPropertyVariables>
<config>${config.preferences}</config>
<log4jproperties>${config.log4jproperties}</log4jproperties>
<!-- <jacoco-agent.destfile>target/it-jacoco.exec</jacoco-agent.destfile> -->
<jacoco-agent.destfile>${sonar.jacoco.itReportPath}</jacoco-agent.destfile>
</systemPropertyVariables>
<includes>
<include>**/*ITest.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!-- MAVEN Jacoco plugin -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<excludes>
<exclude>**/*UTest.java</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>default-instrument</id>
<goals>
<goal>instrument</goal>
</goals>
</execution>
<execution>
<id>default-restore-instrumented-classes</id>
<goals>
<goal>restore-instrumented-classes</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.agent</artifactId>
<classifier>runtime</classifier>
<version>${jacoco.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</profile>