从实用性的角度来看,这是一个关于单元测试的哲学问题:测试用例应该在全部还是大部分时间通过还是失败?
几点:
如果您正在练习 TDD,单元测试最初预计会失败。重点是你开始开发 https://en.wikipedia.org/wiki/Test-driven_development
如果单元测试始终失败,而软件仍然发布到生产环境 - 这仅仅意味着开发人员没有修复测试用例,或者测试用例不相关/无用。
如果单元测试始终失败,并且软件未发布到生产环境 - 这意味着开发人员在生产发布之前仍有工作要做。
如果单元测试从未失败,这是否也表明测试用例无用? 但是,这让我想起了《泰坦尼克号》:)
我提到了实用性 - 测试用例的开发也需要时间/资源。编写太多无用的测试是没有意义的。世界毕竟不是“测试驱动”的。这是商业/金钱驱动的。
最佳答案
如果单元测试失败,则表明某些内容无法正常工作:被测系统 (SUT) 无法正常工作,或者单元测试无法正常工作。
如果单元测试不起作用,则应修复或删除它。
如果 SUT 不起作用,则意味着您的系统存在缺陷。在这种情况下,您的首要任务应该是解决缺陷。
每次 checkin 时,所有测试都应通过。
当您执行 TDD 时,您最初会看到测试失败,那就是 the reason you can trust them 。不过,作为 TDD 红/绿/重构周期的一部分,在每次迭代结束时,您应该进行全绿测试运行。这就是重点。
因此,测试在大多数情况下都应该通过。
关于unit-testing - 单元测试-实用性 : Should it pass or fail all or most of the time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205413/