Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为大型解决方案组织单元测试项目_C#_Asp.net_Unit Testing - Fatal编程技术网

C# 为大型解决方案组织单元测试项目

C# 为大型解决方案组织单元测试项目,c#,asp.net,unit-testing,C#,Asp.net,Unit Testing,我需要为一个有很多项目的现有解决方案添加单元测试。构建这个项目需要很长时间,所以我决定为单元测试项目创建另一个单独的解决方案。我不知道什么更好:引用dll或在单元测试解决方案中包含我要测试的现有项目 我应该如何组织我的测试用例,为什么?请根据您自己的直接经验回答。我强烈建议您将要测试的项目包括在解决方案中,并参考该项目。 在一个大项目中,我只引用了DLL,在测试旧版本DLL的单元测试中遇到了很多问题,因为构建单元测试项目不会自动触发it测试项目的构建。正如Daniel所说,引用项目将是我的首选方

我需要为一个有很多项目的现有解决方案添加单元测试。构建这个项目需要很长时间,所以我决定为单元测试项目创建另一个单独的解决方案。我不知道什么更好:引用dll或在单元测试解决方案中包含我要测试的现有项目


我应该如何组织我的测试用例,为什么?请根据您自己的直接经验回答。

我强烈建议您将要测试的项目包括在解决方案中,并参考该项目。

在一个大项目中,我只引用了DLL,在测试旧版本DLL的单元测试中遇到了很多问题,因为构建单元测试项目不会自动触发it测试项目的构建。

正如Daniel所说,引用项目将是我的首选方法


如果想改善本地构建所需的时间,请考虑使用扩展来控制哪些项目是加载的,哪些不是。当您只处理一个非常大的解决方案的子集时,它确实有助于缩短构建时间。

Serghei,正如Daniel Hilgarth所指出的,建议在主解决方案中包含单元测试项目。此外,建议在开发项目和单元测试项目之间建立1:1的关系

话虽如此,值得注意的是,解决方案中的项目数量以非线性方式增加了构建时间

我最近参与的一个项目在解决方案中有97个项目!构建时间超过10分钟。通过将代码整合到更少的项目中,对于相同的LOC,构建时间缩短到2分钟

从长远来看,以“正确性”为代价而损失的开发人员生产率可能非常昂贵。这不仅是构建时间的损失,而且是由于注意力不集中、代表开发人员的烦恼等造成的时间损失。。。有多少次你个人被一个缓慢的构建/计算机/IDE停止,最终浏览网页,在你意识到“哦,构建完成了!”之前浪费了10分钟。我的处境如此糟糕,以至于构建之间的时间都花在了浏览求职网站上;-)

作为大型解决方案中的一个变通方法,我已经这样做了

  • 为轻量级开发人员创建一个解决方案(仅限开发人员项目)
  • 为相同的开发项目和单元测试创建另一个
  • 在开发时保持两个Visual Studio实例都处于打开状态。通过这种方式,我可以获得一个较短的构建/运行/调试周期来进行开发,但可以随时检查测试(编译、执行)的状态
  • 当需要签入时,我确保dev+单元测试项目构建、测试通过并签入
这就引入了一种可能性,即当开发代码与单元测试所期望的代码不同时,单元测试将无法构建,然而这是一种平衡。必须进行权衡,以确保最高的生产率,无论是通过纯粹的开发还是修复时间中断的测试,在任何时候都是如此。生产效率不仅会因为缓慢的构建和IDE而降低,而且还会因为修复了那些损坏的测试而降低,所以在平衡这些测试时,您必须确保不会走得太远

最后一点是这一点。您是否考虑过设置控制台批处理文件以在本地开发人员PC上执行team city构建?这可以作为签入之前的最后一步来执行,以确保开发人员签入根据TC设置生成和传递的代码


致以最诚挚的问候,

谢谢您的回答,正如我在单元测试项目解决方案中所理解的那样,我应该包括来自其他解决方案的项目,我想测试它是否正确?是的。它还意味着包括您要测试的项目引用的所有项目,等等。非常感谢您提供Solution Load Manager。