C# 如何在VisualStudio中进行TDD,将生产代码与测试代码分离
在典型的javaide(比如Intellij)中,使用测试驱动开发(TDD)风格意味着一个非常高效的工作流,并且在完成测试后几乎不需要修改或替换代码 Java项目,就像C#解决方案一样,有各种不同的风格将生产代码与测试代码分离,但通常有两种并行的目录结构C# 如何在VisualStudio中进行TDD,将生产代码与测试代码分离,c#,visual-studio,tdd,resharper,C#,Visual Studio,Tdd,Resharper,在典型的javaide(比如Intellij)中,使用测试驱动开发(TDD)风格意味着一个非常高效的工作流,并且在完成测试后几乎不需要修改或替换代码 Java项目,就像C#解决方案一样,有各种不同的风格将生产代码与测试代码分离,但通常有两种并行的目录结构 src 试验 或者测试在src树中由名称空间分隔。然后是关于这个主题的无休止的变化 使用Intellij之类的工具,我可以创建我的“测试类/方法”,开始编码,在运行时动态生成对象,它们通常会在正确的位置结束,也就是生产代码应该在的位置。当我
- src
- 试验
但是请花点时间在Resharper中投票支持此功能您可以通过Visual Studio使用此功能删除步骤4和5,Resharper有点让我分心 创建两个项目: 解决方案
|项目1
_quick.cs
|UnitTestProject
_unittestclassquick.cs
1.在Project1中创建一个名为quick的空类。
2.在UnitTestClassQuike.cs中创建单元测试,例如:
using Project1;
private class UnitTestClassQuiz
{
[TestMethod]
public void ShouldReturnDivisibles()
{
//Arrange
Quiz q = new Quiz();
//Act
var actual = q.ReturnDivisibles(60)
此时,VS将在“ReturnDivisibles”函数下有一条扭曲的红线,因为它未声明!将鼠标悬停在这个未声明的“ReturnDivisibles”函数上,您将看到一个蓝色下划线/下划线,单击它,它将为您提供一个上下文菜单,其中包含“生成方法存根”选项
生成方法存根时,将在Project1中的测验类中创建一个函数,例如:
public object ReturnDivisibles(int p)
{
throw new NotImplementedException();
}
请解释一下?这是一个很好的问题,是否有人知道如何使用-ie direct在何处(solution\project\class)创建存根来实现这一点?对我来说,这项功能对于JetBrains的员工来说似乎是个好主意。首先创建单独的文件,然后使用Window->Split。@请详细说明如何使用Split Window避免第4步和第5步。我很感兴趣!我不明白这样做的原因。你为什么不创建最终会用到的生产代码?@BrianRasmussen我不知道如何解决这个问题。也许我对TDD有点极端,但我实际上希望当我编写代码时,它并不存在,我希望IDE只是“按照我告诉它的去做”。我的意思是,编辑可以自己解决所有问题,所以我为什么要这么做呢。请叫我lazy,但我相信这是在编码方面非常务实的关键之一。抱歉,Jeremy,但我不想像您在示例中那样手动创建类。Resharper已经按照您描述的那样工作了。摆脱4和5最终需要在第3步中自动在正确的位置创建该类(事实并非如此)。我不想手动创建该类-我认为您可能不得不妥协这一点(第3步)。如果不手动创建要在所需项目中测试的类,Visual Studio、Eclipse、ReSharper等如何知道在何处生成方法存根?我现在每天都在妥协。在IntelliJ中,它弹出一个小对话框,询问位置,但默认设置为production,并具有适当的名称空间,因此基本上只需按enter键。它的工作原理应该与创建测试的VisualStudio扩展完全相同,但不包括混响。该扩展默认为按约定进行的假设。查看VS扩展,应该不太难实现:)请在atlassian对该问题进行投票-