首页 > 解决方案 > spring boot:如何仅在 jenkins 上运行测试类?

问题描述

我们有一个测试类,我只想在 Jenkins 上运行。

我认为这可以通过检查活动弹簧配置文件(例如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吗?

标签: javaunit-testingspring-bootjenkins

解决方案


您可以使用声明式选项,而不是以编程方式进行。

您可以配置 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>

在非詹金斯运行:mvn test -Pskip-test


推荐阅读