【发布时间】:2018-12-02 20:27:21
【问题描述】:
tl;博士
我应该跳过 maven 中的测试吗?
加长版
(我不知道这是否重要。)
我使用 Java EE eclipse,我在正确的 maven 目录中有测试和代码。
为什么我应该(不)在构建期间跳过测试?
【问题讨论】:
标签: eclipse maven unit-testing testing build
我应该跳过 maven 中的测试吗?
(我不知道这是否重要。)
我使用 Java EE eclipse,我在正确的 maven 目录中有测试和代码。
为什么我应该(不)在构建期间跳过测试?
【问题讨论】:
标签: eclipse maven unit-testing testing build
永远不要将跳过测试作为构建过程中的正常现象。
定期这样做是一个恶性循环,它会使您的测试变得毫无用处,并且您的应用程序的健壮性也会降低。
从 IDE(Eclipse 或任何其他)自动构建
允许使用 Maven 作为构建工具的 IDE 不会在每次构建时执行单元测试,因为默认情况下它们不会执行 test 目标,也不会执行 package 目标。而不是他们专注于编译器插件(compile 和 test-compile)以及资源插件(resources 和 test-resources)。
因此,不应在 IDE 执行的每个自动构建中执行单元测试。
使用 mvn 包/安装构建
为什么我应该(不)在构建期间跳过测试?
您的问题涉及 Maven,但它可能是任何其他构建工具或任何编程语言,它会产生相同的后果。
首先,问你一个问题,我们为什么要编写单元测试。
我们编写它们是为了验证我们的组件的行为,并且还在我们的组件的行为不再如预期(回归检测)时得到警告(回归检测)。
定期忽略测试执行意味着您将承担单元测试覆盖的风险,组件的行为在您不知道的情况下出现回归。
以后可能会发生其他回归,您仍然不会意识到它们。
很久以后,您的许多测试都会失败,因为您从未纠正它们以保持符合预期的行为。
由于测试失败会阻止构建,因此很可能会导致您跳过/禁用/注释/删除单元测试,因为这些测试失败太频繁,而且在太多情况下。
您的单元测试将化为乌有,您将失去单元测试提供的所有好处。
但是为什么存在跳过测试选项呢?
我建议/仅将它们用于极端情况,例如以下(并非详尽无遗)和仅暂时:
未维护许多测试的遗留项目。
由于纠正它们将花费太多时间,因此在第一次时,您没有其他选择可以跳过它们来构建您的组件。
并且您必须尽快禁用不可靠的测试(@Ignore 使用 JUnit),纠正这些可能是或计划它们。通过这种方式,您可以重新启用测试执行并让工作测试定期执行。
根据执行环境,测试可能会失败的项目。
在这里,它应该是一个临时的解决方法,也应该是孤立的。
事实上,无论在什么环境下执行测试,您都必须尽快找到使测试成功的方法。
【讨论】: