我一直在研究单元测试的好处,并验证代码的正确性以及如果你正确地执行它会自然地创建松散耦合代码的额外好处。换句话说,一个单位就像一个方法一样小 - 而不是更大。这些似乎是最重要的2.我只是想知道好的单元测试是否会围绕代码并保护其功能免受其他开发人员代码更改(假设单元测试失败是一个失败的构建)。还有我忽略的任何其他好处吗?
答案 0 :(得分:0)
是的,大多数时候,单元测试确实会阻止其他开发人员的错误。然而,这并非总是如此。对于更可行的解决方案,测试点是更好的选择。
答案 1 :(得分:0)
取决于其他开发者是否不会删除您的测试。
但严重的是,如果你正确地模块化你的代码并使测试清楚,那么如果它破坏了测试,人们通常会三思而后行。
除非他们有充分的理由进行更改 - 然后他们需要相应地更改测试,以描述新功能。
答案 2 :(得分:0)
单元测试是否可以保护您的代码免受其他开发人员的错误?
不完全是。
单元测试隔离一段特定代码("单元"),并以正面和负面方式调用它,每次都根据预期结果测试输出。这确保了该单元的稳健性并满足预期的要求 - 在该单元的上下文中。
这不会阻止其他开发人员在将值传递给您的代码之前犯错,或者对您返回的值执行错误。传递给您的代码的值可能有效但仍然错误。例如,您的代码可能期望0到100之间的正整数,但您的代码不知道传递50值的特定调用者是不正确的 - 您的代码只能根据它接收的内容执行操作,它没有围绕该值的其他上下文。在这种情况下,对该调用代码的单元测试可能会解决问题,但对您的代码进行单元测试不会。
我只是想知道好的单元测试是否会使代码更加环绕并保护其功能免受其他开发人员代码更改的影响
单元测试不会围栏任何东西。假设编写良好的测试,他们会告诉您代码是否已更改且不再符合其原始意图。他们不会告诉您调用者是否在运行时传递了错误的值,但是如果传入了错误的值,他们将帮助您确保代码正常运行。
根据我的经验,单元测试与编写代码的人一样好。如果那个人是一个糟糕的程序员,或者没有正确理解这些要求,那么这些测试可能毫无价值。我过去看过一些真正糟糕的单元测试,因此我总是建议它们应该只是测试方法的一部分,你不应该只依赖它们 - 它们只是一种规范方法的一部分。
答案 3 :(得分:0)
拥有一个体面的单元测试覆盖率的另一个(被忽视的)好处是,它实际上可以鼓励开发人员将他们的脚趾浸入一个大的解决方案/旧的遗留代码中,因为他们知道他们有一个应该提供即时反馈的安全网当重构出错时。