我应该跳过对Maven的测试吗?

时间:2018-06-23 17:32:32

标签: eclipse maven unit-testing testing build

tl; dr

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

长版

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

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

为什么我不应该在构建过程中跳过测试?

1 个答案:

答案 0 :(得分:4)

tl; dr

切勿将测试跳过作为构建中的正常事情。
定期执行此操作是一个恶性循环,它将使您的测试无用且应用程序的健壮性降低。

长版

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

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

使用mvn软件包构建/安装

  

为什么我不应该在构建过程中跳过测试?

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

首先,请问一个问题,为什么我们要编写单元测试。
我们写它们以验证组件的行为,并且警告我们,因为组件的行为不再符合预期(回归检测)

定期忽略测试执行意味着您将冒被单元测试组件覆盖的风险,而这些组件的行为会发生退化而又不了解它们。
以后可能还会发生其他回归,您仍然不会意识到它们。
而且很久以后,您的许多测试都会失败,因为您从未纠正它们以使其符合预期的行为。

由于测试失败阻止了构建,因此很可能导致您跳过/禁用/注释/删除单元测试,因为这些测试失败的次数太多而且在很多情况下。
您的单元测试将变成尘土,并且您将失去单元测试提供的所有好处。

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

我建议/仅将它们用于拐角情况,例如以下情况(并非详尽无遗),并且仅是临时

  • 遗留项目,许多测试没有得到维护。
    由于更正它们将花费太多时间,因此在第一次使用时,您没有其他选择可以跳过它们来构建组件。
    并且,您必须尽快禁用不可靠的测试(使用JUnit使用@Ignore),更正可能存在的问题或计划它们。这样,您可以重新启用测试执行,并让正常运行的测试正常执行。

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