如何在Visual Studio中将生产代码与测试代码分开进行TDD

时间:2014-09-16 22:04:10

标签: c# visual-studio tdd resharper

在典型的Java IDE(比如Intellij)中,工作测试驱动开发( TDD )样式意味着非常高效的工作流程,在完成测试代码后几乎不需要修改或替换。

Java项目,就像C#解决方案一样,有各种样式将生产代码与测试代码分开,但通常有两个并行的目录结构

  • SRC
  • 测试

或测试由src树中的命名空间分隔。然后是那个主题的无穷变化。

使用像Intellij这样的东西我可以创建我的"测试类/方法",开始编码,动态生成对象,就像我去的那样,它们通常会在正确的位置结束,也就是说,在哪里生产代码应该是。当我完成后,我已经完成了。 Java世界中的工具和IDE支持这110%。

现在体验Visual Studio(或实际上是R#体验)。目前我在C#中执行TDD的(简化)工作流程是这样的(使用R#):

  1. 在测试项目中创建测试类
  2. 创建测试方法
  3. 开始编码..生成类,接口等。我根据R#default在与测试类相同的文件中生成代码。 ...
  4. 当我完成后,我会转到每个类/接口/任何内容,并将文件移动到与其名称相匹配的单独文件中(ctrl + enter action)。
  5. 转到解决方案资源管理器并将测试项目中的类拖放到生产项目中。
  6. 我想摆脱一切4& 5.我还希望我的课程在第3步中直接在生产项目中生成。

    我已经搜索了高端和低端的Visual Studio扩展程序,可以帮助我解决这个问题。

    问题1:如何以今天的方式提高TDD效率?

    问题2:我是否应该采用另一种TDD工作流/结构,最终为我提供更好的Visual Studio TDD体验? (这是另一个问题

    保持未接听的 但请花点时间在Resharper https://youtrack.jetbrains.com/issue/RSRP-424370

    中投票支持此功能

1 个答案:

答案 0 :(得分:2)

您可以删除第4步和第4步。 5使用Visual Studio使用Generate Method Stub功能, Resharper位分散了我的注意力

创建两个项目:


| PROJECT1
 _ Quiz.cs
| UnitTestProject
 _ UnitTestClassQuiz.cs

<小时/> 1.在Project1中创建一个名为Quiz的类 2.在UnitTestClassQuiz.cs中创建单元测试,例如:

using Project1;
private class UnitTestClassQuiz
{
[TestMethod]
public void ShouldReturnDivisibles()
{
  //Arrange
  Quiz q = new Quiz();

  //Act
  var actual = q.ReturnDivisibles(60) 

此时VS会在'ReturnDivisibles'功能下有一条红色波浪线,因为它未声明!将鼠标悬停在这个未声明的“ReturnDivisibles”函数上,你会看到一个蓝色的下划线/下划线,点击它,它会给你一个上下文菜单,其中包含“Generate Method Stub”选项。

当您生成方法存根时,将在Project1的Quiz类中创建一个函数,例如:

public object ReturnDivisibles(int p)
{
  throw new NotImplementedException();
}