4

我目前正在为我的项目中的每个程序集创建一个配对的单元测试程序集,它们都位于同一个文件夹中。Visual Studio中单元测试的组织

  • MyProject的/ MyProject.csproj
  • MyProject.Test/MyProject.Test.csproj

望着开源项目,我已经看到了一些较小的项目把所有的测试在一个集会,并其他人像我一样分裂出来。我正在处理一个大型解决方案,因此将所有测试放在一个项目中会非常疯狂。

我目前有msbuild逻辑运行所有* .Test.csproj文件的测试。如果我将所有测试都放在不同的文件夹中,我不需要这样做。

只是想知道是否有任何好的论据以某种方式做事情。

感谢

+1

这里有一个类似的问题:) http://stackoverflow.com/questions/1116488/how-do-you-setup-your-unit-test-projects-in-net/1116577#1116577 – 2009-08-16 18:01:19

回答

4

我做同样的方式但是我改变默认命名空间fo r每个测试项目与生产项目的命名空间相匹配。所以类X.Y.Foo的测试在X.Y.FooTest而不是X.Y.Test.FooTest - 这意味着你需要更少的使用指令,通常使事情变得更简单。

我希望将两者保留在单独项目中的主要原因是为了避免在生产库中包含测试或不得不运送未经测试的库。通过独立的项目结构,您可以针对您构建的任何内容运行单元测试。它还可以更轻松地查看生产类,而无需查看两倍的文件(当获得库的“感觉”时)。

最后,不要忘记,如果您在测试时需要访问internal成员,总是会有[InternalsVisibleTo]

2

我做的,除了每个项目同样的事情,是在同一个根文件夹下它自己的文件夹。沿着以下 东西:

解决方案文件夹

  • 项目A文件夹
  • ProjectA.Test文件夹
  • 项目B文件夹
  • ProjectB.Test文件夹
+0

这是我们在办公室的新计划。 – Tangurena 2009-08-16 18:53:09

1

我总是为每个项目都有一个单独的测试项目。其中一部分就是我喜欢它的组织,但我也经常遇到这样的情况:我决定将一个库分成它自己的解决方案,以便其他解决方案可以重用它。在这种情况下,让图书馆项目拥有自己独立的测试项目(而不是单个项目中的所有测试)使得将该库分解出来更容易。

3

我建议尽量少做单元测试项目。原因是你创建的每一个至少增加了10秒的编译时间。在一个大项目中,它开始累积起来。

这里的目录结构使用:

PROJECTNAME /分支机构/树干/项目/代码/ codeproject1
PROJECTNAME /分支机构/树干/项目/代码/ codeproject2
PROJECTNAME /分支机构/树干/项目/代码/ codeproject3
PROJECTNAME /分支机构/树干/项目/测试/ testproject1
PROJECTNAME /分支机构/树干/依赖 PROJECTNAME /原型
PROJECTNAME/...

和testproject1内,以下目录结构:

codeproject1/
codeproject2/
codeproject2 /网络
codeproject2 /网络/ MVC
codeproject3/
codeproject3 /支持