unit-testing - 自测试代码与单独测试相比有哪些优点?

标签 unit-testing refactoring tdd

就我个人而言,我总是将单元测试放在一个单独的项目中,因为 MSTest 似乎就是这样设置的。但我正在阅读 Martin Fowler 的《重构:改进现有代码的设计》,他似乎主张不仅将它们放在同一个项目中,而且将它们放在与它们的方法相同的类中正在测试。

老实说,除了哲学差异(测试文档是测试文档还是困惑?)之外,我真的很难想到这与将测试放在与代码本身不同的区域中有何不同。

是否有任何明确的理由选择其中之一?或者这主要是哲学上的差异?

更新:我不一定以某种方式相信,但至少我知道这些论点是什么。我希望我可以选择每个人的答案,但我只能选择一个。

最佳答案

也许拥有自测试代码有一些优雅,但我倾向于与您有相同的理念——代码分离胜过一些抽象美的概念。当您设计一个类时,您可以从根本上将其分为三个部分:

  • 类的作用(例如,类的定义)
  • 它是如何做到的(实现)
  • 如何使用它(文档和/或测试用例)

我认为测试用例是为了文档的目的,也是测试套件中安全网的一部分。当新程序员查看您的代码时(可能是在您停止编写代码很久之后),文档很少是传达如何使用类的最有效方式。它可以回答有关代码在特定情况下如何表现的问题,提供类及其方法的总体概述,等等,但测试用例提供了如何在真实代码中使用该类的具体示例/em>.

因此,出于这个原因,我倾向于说他们应该留在类(class)本身之外,因为这强化了这种程度的分离。

关于unit-testing - 自测试代码与单独测试相比有哪些优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/509283/

相关文章:

c# - 以高效且省时的方式构建、启动 ASP.NET Web 应用程序并运行 Microsoft CodedUI 测试

java - 什么是将 2 个类合并为 1 个类,其中一个类是另一个类的子类?

java - 重构以编写 "pretty"JUnit 测试

unit-testing - 生产中的 NJasmine

java - 如何为 swing 组件做有效的 TDD

asp.net-mvc - 使用 ASP.NET MVC 进行测试驱动开发 - 从哪里开始?

postgresql - pgtap:预期和获得的结果相等,但测试失败

.net - 在单元测试中修改应用程序设置

c# - 如何将依赖项从测试项目传递到 DryIoc 中的具体实现

refactoring - 代码生成器与代码重构