【问题标题】:Should I skip tests with maven?我应该跳过 Maven 的测试吗?
【发布时间】:2018-12-02 20:27:21
【问题描述】:

tl;博士

我应该跳过 maven 中的测试吗?

加长版

(我不知道这是否重要。)

我使用 Java EE eclipse,我在正确的 maven 目录中有测试和代码。

为什么我应该(不)在构建期间跳过测试?

【问题讨论】:

    标签: eclipse maven unit-testing testing build


    【解决方案1】:

    tl;博士

    永远不要将跳过测试作为构建过程中的正常现象。
    定期这样做是一个恶性循环,它会使您的测试变得毫无用处,并且您的应用程序的健壮性也会降低。

    加长版

    从 IDE(Eclipse 或任何其他)自动构建

    允许使用 Maven 作为构建工具的 IDE 不会在每次构建时执行单元测试,因为默认情况下它们不会执行 test 目标,也不会执行 package 目标。而不是他们专注于编译器插件(compiletest-compile)以及资源插件(resourcestest-resources)。
    因此,不应在 IDE 执行的每个自动构建中执行单元测试。

    使用 mvn 包/安装构建

    为什么我应该(不)在构建期间跳过测试?

    您的问题涉及 Maven,但它可能是任何其他构建工具或任何编程语言,它会产生相同的后果。

    首先,问你一个问题,我们为什么要编写单元测试。
    我们编写它们是为了验证我们的组件的行为,并且还在我们的组件的行为不再如预期(回归检测)时得到警告(回归检测)

    定期忽略测试执行意味着您将承担单元测试覆盖的风险,组件的行为在您不知道的情况下出现回归。
    以后可能会发生其他回归,您仍然不会意识到它们。
    很久以后,您的许多测试都会失败,因为您从未纠正它们以保持符合预期的行为。

    由于测试失败会阻止构建,因此很可能会导致您跳过/禁用/注释/删除单元测试,因为这些测试失败太频繁,而且在太多情况下。
    您的单元测试将化为乌有,您将失去单元测试提供的所有好处。

    但是为什么存在跳过测试选项呢?

    我建议/仅将它们用于极端情况,例如以下(并非详尽无遗)和仅暂时

    • 未维护许多测试的遗留项目。
      由于纠正它们将花费太多时间,因此在第一次时,您没有其他选择可以跳过它们来构建您的组件。
      并且您必须尽快禁用不可靠的测试(@Ignore 使用 JUnit),纠正这些可能是或计划它们。通过这种方式,您可以重新启用测试执行并让工作测试定期执行。

    • 根据执行环境,测试可能会失败的项目。 在这里,它应该是一个临时的解决方法,也应该是孤立的。
      事实上,无论在什么环境下执行测试,您都必须尽快找到使测试成功的方法。

    【讨论】:

      猜你喜欢
      • 2014-09-03
      • 2021-04-30
      • 2013-07-07
      • 1970-01-01
      • 2013-04-30
      • 2012-01-30
      • 1970-01-01
      • 2014-09-27
      相关资源
      最近更新 更多