【问题标题】:spring boot : how to run a test class only on jenkins?spring boot:如何仅在 jenkins 上运行测试类?
【发布时间】:2019-06-14 15:26:25
【问题描述】:

我们有一个测试类,我只想在 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吗?

【问题讨论】:

  • 你最好把它放在一个单独的 integrationTest 目录中,并且只在 Jenkins 中运行那个源集。 Gradle 在这里举了一个例子来支持这一点:petrikainulainen.net/programming/gradle/…,但是你可以使用任何工具来构建和运行。

标签: java unit-testing spring-boot jenkins


【解决方案1】:

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

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

【讨论】:

  • 酷,我们后来也想过这个。这可能是最好的方法之一。
猜你喜欢
  • 2019-03-05
  • 2021-06-10
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 2016-12-22
相关资源
最近更新 更多