我们有一个测试类,我想只在 Jenkins 上运行。
我认为这可以通过检查 Activity 的 spring 配置文件(例如 jenkins
)或本地机器名称为 XYZ
来实现。
问题是,当我们尝试在 jenkins 以外的计算机上运行应用程序上下文时,应用程序上下文的加载失败。
所以我无法检查测试类本身的 @Before 方法中的配置文件或参数。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Config.class)
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("clusterMongo")
public class MongoTest {
@Before
public void setupClass() {
// Ignore test if not running on white listed machines
org.junit.Assume.assumeTrue(AuthTools.isJenkins()); // wonT work !!
}
...
我们有什么想法可以实现这一目标吗?
我可以使用条件bean吗?
最佳答案
您可以选择声明式方式,而不是通过编程方式进行操作。
您可以配置 Surefire 插件以跳过特定 Maven 配置文件的某些测试:
<profile>
<id>skip-test</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/MongoTest.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
在非 Jenkins 上运行:mvn test -Pskip-test
关于java - Spring 启动: how to run a test class only on jenkins?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56601186/