2016-09-25 30 views
1

我一直在寻找单元测试的好处,并验证代码的正确性和附加的好处,你会自然地创建松耦合的代码,如果你做得很好。换句话说,一个单位就像一种方法一样小 - 不会更大。这些似乎是大2.我只是想知道,如果良好的单元测试将环绕代码并保护其功能免受其他开发人员代码更改(假设单元测试失败是失败的构建)。我还忽略了其他的好处吗?单元测试是否保护您的代码免受其他开发人员的错误?

+2

正确的封装将有助于防止其他开发人员的错误。通过将方法,模块或逻辑的非计划使用仅限于“让他们使用”的内容,那么您就限制了其他开发人员的错误。单元测试没有。相反,单元测试经常需要您打开您的代码库,而不是功能上必要的。 单元测试强制执行的唯一一件事就是您的模块和方法按照预期的方式继续工作。 –

回答

0

有一个体面的单元测试覆盖其他(忽略)好处是事实上,它实际上可以鼓励开发人员将他们的脚趾陷入一个大的解决方案/旧的旧代码,知道他们有一个安全网,应该提供即时当重构出错时提供反馈。

0

是的,大多数时候,单元测试确实会防止其他开发者的错误。但是,这并非一直如此。对于更可行的解决方案,测试点是更好的选择。

0

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

但是,严重的是,如果你正确地模块化你的代码并使测试变得清晰,通常人们会考虑改变它,如果它打破了测试。

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

0

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

不完全是。

单元测试隔离了一段特定的代码(“单元”),并以正面和负面的方式调用它,每次都会根据预期的结果测试输出。这确保了该装置的稳健性,并且在该装置的范围内符合预期要求 -

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

我只是想知道,如果良好的单元测试将圈定代码,并保护其功能从其他开发人员的代码更改

单元测试没有圈护栏网东西。假设写得很好的测试,他们会告诉你,如果你的代码被改变,它不再符合它的原始意图。他们不会告诉你,如果调用者在运行时传递了错误的值,但他们将帮助您确保您的代码在传入错误值时正常工作。

根据我的经验,单元测试仅作为就像编写代码的人一样好。如果这个人是一个糟糕的编码员,或者没有正确理解要求,那么测试可能毫无价值。过去我见过一些真正糟糕的单元测试,因此我总是建议他们应该只是测试方法的一部分,您不应该仅仅依赖它们 - 它们只是一种严谨的方法的一部分。

相关问题