uri*_*rig 8 .net unit-testing projects-and-solutions
您能否分享在.net解决方案中设置单元测试项目的方式?
我可以想象几种可能的方法.例如:
为单元测试提供单独的解决方案,完美地镜像正在测试的原始代码解决方案的结构.
在原始代码解决方案中,有一个解决方案文件夹,您可以在其中完美地镜像...
为每个代码项目提供一个单元测试项目,并与解决方案的树结构一起驻留在其中.
有一个单元测试项目,涵盖在树形结构中与它们并存的几个代码项目.
很想知道你在解决方案中是如何实际做到的.
Jon*_*eet 10
绝对是单一的解决方案,但是单独的项目:
每个生产项目的一个测试项目对我来说很有效.我倾向于使命名空间对于测试和生产代码都相同,这意味着您通常不需要使用尽可能多的using指令.
Mar*_*son 10
IMO,如果您想让测试易于运行,测试项目绝对必须与生产代码在同一解决方案中.如果所有开发人员都非常勤奋,那么将测试放在另一个解决方案中可能会有效,但它会在更改生产代码和运行测试之间增加额外的障碍.我倾向于选择尽可能多的障碍.
有几种不同的方法可以做到这一点.
每个人都有自己的权衡,你必须权衡.
每个解决方案的单个测试项目
如果整个解决方案包含有凝聚力的项目,则有意义.如果您总是要使用相同的解决方案进行开发,那么拥有一个集中的测试项目会很不错.
这意味着构建过程的开销会减少(当您拥有大量项目的解决方案时,减少组装计数也会缩短构建时间)并且没有维护.nunit文件等的开销.
此外,每个人都知道测试的去向.缺点是您必须使用命名空间来划分不同的生产项目,现在一个项目的测试与其他项目相关联.也就是说,这是最容易获得支持的人,因为跟踪的次数较少,开发人员可以轻松地进行测试.缺点是在某些情况下,这不适合你正在开发的东西.
每个系统单个测试项目
基本上和上面一样,除了它的粒度更细.您将相关项目分组到区域/系统中,并为每个项目使用单个测试程序集.这稍微增加了复杂性,但也意味着系统在其他解决方案中更容易提取/可重复使用.
生产项目和测试项目的一对一映射
在创建新程序集方面开销最大,在项目负载时会略微增加构建时间,并且通常会使解决方案文件更大.需要尽职尽责地保持.nunit项目文件是最新的,并且在IDE单元测试中不能很好地发挥作用.
最重要的是,为每个生产项目维护一个测试项目意味着测试只依赖于他们正在测试的功能(因此更容易重用项目),并且您可以通过运行一个项目来更轻松地检查代码覆盖率一次(如果您运行所有测试,由于不相关的测试有时会触及他们不感兴趣的代码,您将获得更高的覆盖率).此外,这是一个简单的模式,因此人们将了解测试的目的在哪里没有问题.
总结:我认为上述任何一种都可以很好地运行,具体取决于你正在开发什么,但如果你想要一个"正常工作"的解决方案,那么我倾向于选择一对一的映射.
| 归档时间: |
|
| 查看次数: |
3102 次 |
| 最近记录: |