C# 如何通过TDD提高往返时间

C# 如何通过TDD提高往返时间,c#,visual-studio,unit-testing,tdd,C#,Visual Studio,Unit Testing,Tdd,我想提高做TDD时的往返时间。我想解决方案的总编译时间会更长,但这并不重要 背景: 当我在编译过程中等待unittest运行时观察输出窗口时,我发现只花了一些时间验证依赖的项目是否不需要构建 声明: 拆分测试项目(今天大约有20k行,并且依赖于九个其他项目) 在较小的测试项目中,每个测试项目测试代码的一小部分,这将减少依赖性,从而增加我当前使用的测试项目的编译时间 视图?通常,我建议为每个程序集创建一个测试项目,这样它将对被测试的程序集有一个依赖关系。如果要测试的程序集名为MyCompany.M

我想提高做TDD时的往返时间。我想解决方案的总编译时间会更长,但这并不重要

背景: 当我在编译过程中等待unittest运行时观察输出窗口时,我发现只花了一些时间验证依赖的项目是否不需要构建

声明: 拆分测试项目(今天大约有20k行,并且依赖于九个其他项目) 在较小的测试项目中,每个测试项目测试代码的一小部分,这将减少依赖性,从而增加我当前使用的测试项目的编译时间


视图?

通常,我建议为每个程序集创建一个测试项目,这样它将对被测试的程序集有一个依赖关系。如果要测试的程序集名为
MyCompany.MyProduct.Common
,则测试项目将为
MyCompany.MyProduct.Common.test


此外,您还可以使用持续集成让构建服务器在成功编译后执行所有适当的单元测试。

通常,我建议为每个程序集创建一个测试项目,这样它将对被测程序集具有一个依赖关系。如果要测试的程序集名为
MyCompany.MyProduct.Common
,则测试项目将为
MyCompany.MyProduct.Common.test


此外,您还可以使用持续集成让构建服务器在成功编译后执行所有适当的单元测试。

我将继续将其拆分为更小的项目,确保依赖关系也会下降。循环引用是最重要的注意事项


编译时间可能会变长,但这可以通过投资更快的硬盘驱动器、更快的CPU和更多的RAM来解决。另外,如果在CI服务器上运行,通过将其拆分,您可以加快构建时间,因为您可以为每个项目创建运行并行任务,而不是像VS通常那样同步运行,您可以异步构建它们中的每一个,然后异步运行。

我会将其拆分为更小的项目,确保依赖关系也会消失。循环引用是最重要的注意事项

编译时间可能会变长,但这可以通过投资更快的硬盘驱动器、更快的CPU和更多的RAM来解决。另外,如果在CI服务器上运行,通过将其拆分,您可以加快构建时间,因为您可以为每个项目创建并行运行任务,因此,您可以不必像VS通常那样同步运行,而是异步构建每个项目,然后异步运行。

称我为疯子(我已经习惯了!)

我将测试放在与被测代码相同的程序集中。

命名空间中的代码N.M获取命名空间中的测试N.M.tests

通过这种方式,
内部
类型可以很容易地进行单元测试,这适用于TDD

由于单元测试没有额外的程序集依赖关系的复杂性,因此可以避免原始问题

我听到的主要反对意见是,您不想将测试发送给客户。然而,除非带宽或存储空间受到特别限制,否则我还没有看到装运测试有害的真正原因。

叫我疯子(我已经习惯了!)

我将测试放在与被测代码相同的程序集中。

命名空间中的代码N.M获取命名空间中的测试N.M.tests

通过这种方式,
内部
类型可以很容易地进行单元测试,这适用于TDD

由于单元测试没有额外的程序集依赖关系的复杂性,因此可以避免原始问题


我听到的主要反对意见是,您不想将测试发送给客户。但是,除非带宽或存储空间受到特别限制,否则我还没有看到装运测试有害的真正原因。

是的,每个实际程序集一个测试程序集是可行的。如何处理常见的测试代码?制作一个像MyCompany.MyProduct.TestBase这样的专用项目?是的,每个实际的程序集一个测试程序集是可行的。您如何处理常见的测试代码?制作一个专门的项目,比如MyCompany.MyProduct.TestBase?这主意不好,违背了单元测试的一般建议。@Dockers:你能更具体一点吗?你为什么认为这是个坏主意?您认为单元测试的一般建议是什么?这是单元测试建议,还是TDD建议?事实上,这不是个坏主意,尽管你知道很多事情,但这对你来说是个坏主意。除了发送测试的问题(这不一定是个问题)之外,我想不出一个“坏”的原因。这就是说,您也可以使用单独的程序集测试内部构件-您只需要使用“内部构件可见”并使其对您的测试套件可见。这不是一个好主意,违背了单元测试的一般建议。@Dockers:您能更具体一点吗?你为什么认为这是个坏主意?您认为单元测试的一般建议是什么?这是单元测试建议,还是TDD建议?事实上,这不是个坏主意,尽管你知道很多事情,但这对你来说是个坏主意。除了发送测试的问题(这不一定是个问题)之外,我想不出一个“坏”的原因。也就是说,您也可以使用一个单独的组件来测试内部构件-您只需要使用“内部构件可见”,并使其对您的测试套件可见。