c# – 如何在Visual Studio中执行将生产代码与测试代码分开的TDD

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

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

> src
>测试

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

使用像Intellij这样的东西我可以创建我的“测试类/方法”,开始编码,动态生成对象,就像我去的那样,它们通常最终位于正确的位置,也就是生产代码所在的位置.当我完成后,我已经完成了. Java世界中的工具和IDE支持这110%.

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

>在测试项目中创建测试类
>创建测试方法
>开始编码..生成类,接口等.我根据R#default在与测试类相同的文件中生成代码.

>当我完成后,我会转到每个类/接口/任何内容,并将文件移动到与其名称匹配的单独文件中(ctrl enter action).
>转到解决方案资源管理器并将测试项目中的类拖放到生产项目中.

我想摆脱一切4& 5.我还希望我的课程在第3步中直接在生产项目中生成.

我已经搜索了高低版本的Visual Studio扩展,可以帮助我解决这个问题.

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

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

仍未得到答复
但请花时间在Resharper https://youtrack.jetbrains.com/issue/RSRP-424370中投票支持此功能

最佳答案 您可以删除第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();
}
点赞