【问题标题】:Jenkins runs Failsafe Integration Tests despite of -DskipITs尽管有 -DskipITs,Jenkins 仍运行故障安全集成测试
【发布时间】:2017-08-24 06:55:59
【问题描述】:

我有一个 maven 多模块项目,其中一个模块使用集成测试针对我的本地数据库。我们使用 Jenkins,当然,由于需要数据库,我不希望 IT 在 Jenkins 上运行。我找到了使用 ma​​ven-failsafe 和选项“-DskipITs”的解决方案。工作就像一个魅力,我可以提交 IT 并且不必担心 Jenkins 抱怨执行 IT。但后来我为我的所有 IT 人员创建了一个测试套件,以便同时运行它们:

package mypackage;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)

@Suite.SuiteClasses({
    AccountManagerImportServiceIT.class,
    AccountManagerToClientImportServiceIT.class,
    ClientImportServiceIT.class,
    ContactPersonImportServiceIT.class,
    InvoiceImportServiceIT.class,
    MeteringPointImportServiceIT.class,
    MeteringPointToRoleImportServiceIT.class,
    RoleImportServiceIT.class,
    WhitelistImportServiceIT.class
})

public class TestSuiteIT {
}

现在看来,Jenkins 忽略了 TestSuite 的故障保护并尝试执行它,这当然会使构建不稳定。我不知道该怎么做才能告诉 Jenkins 也忽略 TestSuite!奇怪的是:如果我在本地系统上执行“mvn clean install -DskipITs”(Jenkins 执行相同的命令),它就可以工作。但 Jenkins 总是试图执行 TestSuite。 :-(

【问题讨论】:

  • 你使用的是surefire还是failsafe插件?
  • 故障安全,正如我在我的问题中所写的那样。它使得将单元测试与集成测试“分开”成为可能。
  • 在您的pom.xml 中,您是否对您的fails-safe-plugin 进行了任何配置以跳过测试?像这样:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.20</version> <configuration> <skipITs>true</skipITs> </configuration> </plugin>
  • 我不想跳过所有测试,只跳过集成测试。而且我不想通过默认跳过它们,但只能使用 Jenkins-Build 上的 maven 参数“-DskipITs”。正如我之前写的,没有 Testsuite 它可以完美运行,但是如果 Jenkins 找到了一个 Testsuite,它会忽略这个参数。

标签: jenkins maven-failsafe-plugin


【解决方案1】:

您可以将<skipTests>false</skipTests> 添加到您的pom.xmlproperties 部分。

然后在plugins 部分找到maven-failsafe-plugin 并使用skipTests 配置。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>x.xx</version>
            <configuration>
              <skipITs>${skipTests}</skipITs>
            </configuration>
</plugin>

默认情况下会启用测试。如果您想跳过测试,请使用mvn install -DskipTests=true

【讨论】:

  • 这将跳过所有测试,但我只是不希望 Jenkins 运行集成测试。 UnitTests 仍应执行!
  • 您可以使用正则表达式排除单元测试:maven.apache.org/surefire/maven-failsafe-plugin/examples/…
  • 我不想排除单元测试。我想排除 IntegrationTests,但仅限于 JENKINS。
猜你喜欢
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多