Unit testing 单元测试能保护您的代码免受其他开发人员的错误吗?

Unit testing 单元测试能保护您的代码免受其他开发人员的错误吗?,unit-testing,testing,junit4,loose-coupling,nunit-3.0,Unit Testing,Testing,Junit4,Loose Coupling,Nunit 3.0,我一直在研究单元测试的好处,验证代码的正确性,以及如果做得好,自然会创建松散耦合代码的附加好处。换句话说,一个单位和一种方法一样小,而不是更大。这些似乎是大2。我只是想知道,好的单元测试是否会隔离代码,并保护其功能不受其他开发人员代码更改的影响(假设失败的单元测试是失败的构建)。还有其他我忽略的好处吗?是的,大多数时候,单元测试确实可以防止其他开发人员的错误。然而,这并非总是正确的。测试点对于更可行的解决方案来说是一个更好的选择。是的,在大多数情况下,单元测试确实可以防止其他开发人员的错误。然而

我一直在研究单元测试的好处,验证代码的正确性,以及如果做得好,自然会创建松散耦合代码的附加好处。换句话说,一个单位和一种方法一样小,而不是更大。这些似乎是大2。我只是想知道,好的单元测试是否会隔离代码,并保护其功能不受其他开发人员代码更改的影响(假设失败的单元测试是失败的构建)。还有其他我忽略的好处吗?

是的,大多数时候,单元测试确实可以防止其他开发人员的错误。然而,这并非总是正确的。测试点对于更可行的解决方案来说是一个更好的选择。

是的,在大多数情况下,单元测试确实可以防止其他开发人员的错误。然而,这并非总是正确的。测试点是更可行的解决方案的更好选择。

取决于其他开发人员是否会删除您的测试

但是说真的,如果你正确地模块化了你的代码,并使测试清晰,通常人们会三思而后行,如果它破坏了测试


除非他们有充分的理由进行更改,否则他们需要相应地更改测试,以描述新功能。

取决于其他开发人员是否会删除您的测试

但是说真的,如果你正确地模块化了你的代码,并使测试清晰,通常人们会三思而后行,如果它破坏了测试

除非他们有很好的理由进行更改,然后他们需要相应地更改测试,以描述新功能

单元测试能保护您的代码免受其他开发人员的错误吗

不完全是

单元测试分离出一段特定的代码(“单元”),并以正反两种方式调用它,每次根据预期结果测试输出。这确保了该单元的健壮性,并在该单元的上下文中满足预期要求

这并不能阻止其他开发人员在将值传递给代码之前犯错误,或者对返回的值执行错误。传递给代码的值可能有效,但仍然错误。例如,您的代码可能期望一个介于0和100之间的正整数,但您的代码不知道传递值50的特定调用方是不正确的-您的代码只能对接收到的内容进行操作,它没有围绕该值的其他上下文。在这种情况下,对调用代码进行单元测试可能会发现问题,但对代码进行单元测试则不会

我只是想知道,好的单元测试是否会隔离代码,并保护其功能不受其他开发人员代码更改的影响

单元测试没有任何限制。假设编写良好的测试,它们会告诉您代码是否已更改,并且不再符合其原始意图。它们不会告诉您调用方在运行时是否传递了错误的值,但它们会帮助您确保在传入错误值时代码的行为正确

根据我的经验,单元测试只和编写代码的人一样好。如果这个人是一个糟糕的程序员,或者没有正确理解需求,那么测试可能毫无价值。我在过去见过一些非常糟糕的单元测试,因此我总是建议它们应该只是测试方法的一部分,你不应该完全依赖它们——它们只是一种有纪律的方法的一部分

单元测试能保护您的代码免受其他开发人员的错误吗

不完全是

单元测试分离出一段特定的代码(“单元”),并以正反两种方式调用它,每次根据预期结果测试输出。这确保了该单元的健壮性,并在该单元的上下文中满足预期要求

这并不能阻止其他开发人员在将值传递给代码之前犯错误,或者对返回的值执行错误。传递给代码的值可能有效,但仍然错误。例如,您的代码可能期望一个介于0和100之间的正整数,但您的代码不知道传递值50的特定调用方是不正确的-您的代码只能对接收到的内容进行操作,它没有围绕该值的其他上下文。在这种情况下,对调用代码进行单元测试可能会发现问题,但对代码进行单元测试则不会

我只是想知道,好的单元测试是否会隔离代码,并保护其功能不受其他开发人员代码更改的影响

单元测试没有任何限制。假设编写良好的测试,它们会告诉您代码是否已更改,并且不再符合其原始意图。它们不会告诉您调用方在运行时是否传递了错误的值,但它们会帮助您确保在传入错误值时代码的行为正确

根据我的经验,单元测试只和编写代码的人一样好。如果这个人是一个糟糕的程序员,或者没有正确理解需求,那么测试可能毫无价值。我在过去见过一些非常糟糕的单元测试,因此我总是建议它们应该只是测试方法的一部分,你不应该完全依赖它们——它们只是一种有纪律的方法的一部分

良好的单元测试覆盖率的另一个(被忽略的)好处是,它实际上可以鼓励开发人员投入到一个大的解决方案/旧的遗留代码中,因为他们知道自己有一个安全网,在重构出错时可以提供即时反馈。

另一个(被忽略的)良好的单元测试覆盖率的好处在于,它实际上可以鼓励开发人员投入到一个大的解决方案/旧的遗留代码中,因为他们知道自己有一个安全网,在重构出错时可以提供即时反馈。

Prope