我应该跳过Maven中的测试吗?
(我不知道这是否重要。)
我使用Java EE eclipse,在正确的maven目录中具有测试和代码。
为什么我不应该在构建过程中跳过测试?
答案 0 :(得分:4)
切勿将测试跳过作为构建中的正常事情。
定期执行此操作是一个恶性循环,它将使您的测试无用且应用程序的健壮性降低。
从IDE(Eclipse或任何其他版本)自动构建
允许将Maven用作构建工具的IDE不在每次构建时都执行单元测试,因为默认情况下,它们不执行test
目标,也不执行package
目标。而不是专注于编译器插件(compile
和test-compile
)以及资源插件(resources
和test-resources
)。
因此,不应在IDE每次执行自动构建时都执行单元测试。
使用mvn软件包构建/安装
为什么我不应该在构建过程中跳过测试?
您的问题涉及Maven,但它可能是任何其他构建工具或任何编程语言,并且会产生相同的结果。
首先,请问一个问题,为什么我们要编写单元测试。
我们写它们以验证组件的行为,并且警告我们,因为组件的行为不再符合预期(回归检测)。
定期忽略测试执行意味着您将冒被单元测试组件覆盖的风险,而这些组件的行为会发生退化而又不了解它们。
以后可能还会发生其他回归,您仍然不会意识到它们。
而且很久以后,您的许多测试都会失败,因为您从未纠正它们以使其符合预期的行为。
由于测试失败阻止了构建,因此很可能导致您跳过/禁用/注释/删除单元测试,因为这些测试失败的次数太多而且在很多情况下。
您的单元测试将变成尘土,并且您将失去单元测试提供的所有好处。
但是,为什么存在跳过测试选项?
我建议/仅将它们用于拐角情况,例如以下情况(并非详尽无遗),并且仅是临时:
遗留项目,许多测试没有得到维护。
由于更正它们将花费太多时间,因此在第一次使用时,您没有其他选择可以跳过它们来构建组件。
并且,您必须尽快禁用不可靠的测试(使用JUnit使用@Ignore
),更正可能存在的问题或计划它们。这样,您可以重新启用测试执行,并让正常运行的测试正常执行。
根据执行环境,测试可能会失败的项目。
同样,这应该是一个临时解决方法,也应该隔离。
确实,无论在什么环境下执行测试,您都必须尽快找到一种使测试成功的方法。