如何仅在部署到 UAT 时进行 jenkins 运行 集成测试?
How to make jenkins run integration tests only when deploying to UAT?
我正在使用 jenkins 并且我有一个 staging > qa > uat > master environment set.
我不希望 jenkins 运行 在暂存和 qa 环境中进行任何集成测试,仅针对 uat 和 master。
可以吗?如果是这样,如何?我的意思是,我应该将单元测试和集成测试分开放在不同的包中吗?今天我有:
src/main/java
src/test/java
定义接口 IntegrationTest
public interface IntegrationTest {}
并使用 Junit4 中的注释 @Category
将您的测试归类为集成测试。
@Category(IntegrationTest.class)
public class YourTest
所以使用 maven surefire
和 failsafe
插件创建睾丸组。
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludedGroups>you.package.IntegrationTest</excludedGroups>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<includes>
<include>**/*.java</include>
</includes>
<groups>you.package.IntegrationTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
集成测试将自动从默认执行中排除,即 mvn clean package。但是,如果您 运行 mvn integration-test
所有集成测试都将 运行。
我正在使用 jenkins 并且我有一个 staging > qa > uat > master environment set.
我不希望 jenkins 运行 在暂存和 qa 环境中进行任何集成测试,仅针对 uat 和 master。
可以吗?如果是这样,如何?我的意思是,我应该将单元测试和集成测试分开放在不同的包中吗?今天我有:
src/main/java
src/test/java
定义接口 IntegrationTest
public interface IntegrationTest {}
并使用 Junit4 中的注释 @Category
将您的测试归类为集成测试。
@Category(IntegrationTest.class)
public class YourTest
所以使用 maven surefire
和 failsafe
插件创建睾丸组。
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludedGroups>you.package.IntegrationTest</excludedGroups>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<includes>
<include>**/*.java</include>
</includes>
<groups>you.package.IntegrationTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
集成测试将自动从默认执行中排除,即 mvn clean package。但是,如果您 运行 mvn integration-test
所有集成测试都将 运行。