你可以分享你设置你的.NET解决方案中的单元测试项目的方式?
我能想象几种可能的方法。 例如:
具有用于单元测试的单独溶液,完全镜像原始代码溶液的结构进行测试。
原代码的解决方案里面,有哪些你完全镜像解决方案文件夹...
对每个代码项目单元测试项目和居住沿着它的解决方案的树结构中。
具有覆盖在树结构中居于和他们一起的几个代码项目单元测试项目。
很想听听你怎么实际上做它在你的解决方案。
你可以分享你设置你的.NET解决方案中的单元测试项目的方式?
我能想象几种可能的方法。 例如:
具有用于单元测试的单独溶液,完全镜像原始代码溶液的结构进行测试。
原代码的解决方案里面,有哪些你完全镜像解决方案文件夹...
对每个代码项目单元测试项目和居住沿着它的解决方案的树结构中。
具有覆盖在树结构中居于和他们一起的几个代码项目单元测试项目。
很想听听你怎么实际上做它在你的解决方案。
IMO,如果你想使你的测试易于运行,测试项目(S)绝对必须走在同一个解决方案的生产代码。 而如果所有的开发人员都非常勤奋的另一种解决方案将测试可以正常工作,它增加了改变生产代码并运行测试之间的额外屏障。 我倾向于选择删除尽可能多的障碍,成为可能。
有几种不同的方法可以做到这一点。
每个人都有自己的权衡,你必须权衡。
每一个解决方案单一的测试项目
如果整个解决方案包含凝聚力工程有道理。 如果你总是会使用相同的解决方案来开发,那么它的好,有一个集中的测试项目。
这意味着有你的构建过程中减少的开销(当你有解决方案,结合项目的分数,减少了组装数量也减少了建造时间),并没有保持一个.nunit文件之类的开销。
此外,大家都知道在哪里的测试去。 缺点是,你必须使用命名空间划分不同的生产项目,现在对于一个项目的测试捆绑到其他人。 即这是“最简单的”一拿到买入的作为有较少的保持跟踪和开发人员可以轻松地运行测试。 缺点是,在某些情况下,这不是一个很好的适合你发展什么。
每个系统单独测试项目
基本上与上述相同,除了它的更细粒度。 您将相关项目纳入区/系统,并使用一个单一的试件每一个。 这增加了复杂一点,但也意味着系统更易于萃取/重复使用在其他的解决方案。
一到的生产项目和试验项目之一映射
在创造新的组件方面最开销,增加了生成时间有点当有项目负荷和通常会使您的解决方案文件较大。 需要始终保持一个.nunit项目文件的最新条款勤奋和不与-IDE单元测试发挥得这么好。
向上的一面是,保持对每一个生产项目的测试项目是指测试只取决于他们正在测试的功能(所以它更容易重新利用项目),你可以更容易地通过运行一个项目检查代码覆盖率在时间(而如果你运行所有测试,你会因测试无关的接触,有时得到的代码覆盖率较高,他们不感兴趣)。 此外,这是一个简单的模式可循,所以人们会明白的地方测试是为了去没有问题。
总结:我觉得任何上述可以很好地工作取决于你开发的东西,但如果你想一个解决方案,“只是工作”,然后我倾向于去为一对一的映射。
这绝对是一个单一的解决方案,但是单独的项目:
每生产项目一个测试项目很适合我。 我往往使命名空间上是相同的测试和生产代码,这意味着你通常不需要使用指令尽可能多的。
下面的结构为我运作良好。 它也保持了生产和测试代码分开。
\source
\source\code\MainSolution.sln
\source\code\Project1
\source\code\...
\source\test\TestSolution.sln
\source\test\TestProject1
\source\test\...
有两种相同的解决方案,但2个项目,在.NET项目和NUnit的项目(一对一),现在如果我有一个具有多个项目的解决方案,那我也只是1的解决方案,它和1 NUnit的项目对每一个项目。我认为这是一个很好的方式,因为它提供给我十个分量组织我的项目。
此外,您还可以在这本书看看: http://www.artofunittesting.com/这是非常好的。
我更喜欢通过添加文件夹,在同一个解决方案,我的源代码和我组测试的测试项目