【问题标题】:TDD solution architecture best practiceTDD 解决方案架构最佳实践
【发布时间】:2016-11-30 11:51:29
【问题描述】:

TDD 项目的解决方案架构将如何。我的意思是我应该如何设计一个测试项目?

我必须为已经开发的 MVC 项目编写一个测试项目。我将增强一些新功能。这将是该项目第一次使用 TDD 方法开发新功能。有什么我应该遵循的约定吗?

我是否应该创建一个单独的测试应用程序,然后编写一些测试类、方法。然后在同一个测试项目或将要实现新功能的原始项目中实现实际功能。

我需要知道的另一件事是,命名类、方法、变量是否有任何特定约定?我将使用 MS 测试和模拟 MOQ。

【问题讨论】:

  • "Then implement the actual functionality in the same test project or in the original project where new feature will be implemented." - 我完全不明白你所说的这句话是什么意思。 TDD 只是意味着您有验证当前功能的测试,然后您添加/修改测试以测试新功能(这些测试最初会失败,因为新功能尚不存在),然后您修改代码以通过测试,然后根据需要使用通过的测试作为基线进行重构。不清楚你在这里问什么。
  • 假设我将编写一个将两个数字相加的功能。所以最初我为 sum 方法编写测试用例。但我实际上还没有创建 sum 方法。所以它会失败。现在我需要创建 sum 方法。那么现在我将在哪里创建 sum 方法?在测试项目中,然后在最终测试或实际项目中移动它。
  • 您将在需要创建的地方创建方法。我想不出任何理由在其他任何地方创建它。听起来你是在试图人为地把事情复杂化。

标签: c# architecture tdd testdriven.net


【解决方案1】:
  • 使用一个测试项目创建新的测试解决方案(测试项目的建议名称<OriginalProject>.Tests - 感谢@ReneA)
  • 将您的原始项目以Existing project 添加到测试解决方案中
  • 将原始项目的引用添加到测试项目中
  • 创建与原始项目相同的文件夹/命名空间结构。这将有助于在两个项目中导航 - 感谢@ReneA
  • 创建新的测试类
  • 添加新的测试方法,您将从原始项目中调用方法并断言结果

不要浪费时间在一开始就命名。开始编写测试,运行它们。经过几次测试,您将能够自己找出哪些命名约定更适合您的项目。

【讨论】:

  • 对于命名,我建议开始一些指导方针,对于测试项目名称,请使用相同的名称,后缀为 .Tests(MyProject 由 MyProject.Tests 测试)。使用与原始文件相同的文件夹/命名空间结构。 (MyProject.NameSpaceA 由 MyProject.Tests.NamespaceA 测试)。这将确保您可以快速找到您正在学习的课程的测试课程。
  • 我从一些教程中读到,首先我必须先编写测试用例。所以它会失败,因为新创建的功能没有实现。然后我必须编写新的方法或代码,我应该在哪里写呢?假设我将编写一个将两个数字相加的功能。所以最初我为 sum 方法编写测试用例。但我实际上还没有创建 sum 方法。所以它会失败。现在我需要创建 sum 方法。那么现在我将在哪里创建 sum 方法?在测试项目中,然后在最终测试或实际项目中移动它。
猜你喜欢
  • 1970-01-01
  • 2011-04-08
  • 2011-12-31
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 2015-04-24
相关资源
最近更新 更多