我目前在我的项目创造了每一个装配配对单元测试组装,都是在同一个文件夹中。
- MyProject的/ MyProject.csproj
- MyProject.Test / MyProject.Test.csproj
纵观开源项目,我已经看到了一些较小的项目把所有的测试在一个总成等进行拆分它像我的。 我在处理大量解决方案,因此这将是非常疯狂的把所有的测试在一个项目。
我现在有MSBuild的逻辑来运行所有* .Test.csproj文件测试。 如果我有我所有的测试在不同的文件夹,我不会要做到这一点。
如果有什么好争论做的事情一定的方式只是想知道。
谢谢
我做同样的方式,但我更改默认的命名空间,每个测试项目,以配合生产项目的命名空间。 因此,对于类中的测试XYFoo
在XYFooTest
而不是XYTest.FooTest
-这意味着你需要更少的使用指令,并通常会使事情变得更简单。
我为希望保持两个独立的项目主要的原因是为了避免或者包括在生产库的测试或有出货的未经检验的库。 与单独的项目结构,你可以运行对你建立什么单元测试。 这也使得它更容易通过只生产类看起来不必尽可能多的文件两次看(获取图书馆的“感觉”的时候)。
最后,不要忘记,如果你需要访问internal
成员进行测试时,总是有[InternalsVisibleTo]
我建议让尽可能少的单元测试项目成为可能。 是的原因是,你创建的每个一个增加的编译时间至少十秒钟。 在一个大的项目,它开始累加。
下面是我使用的目录结构:
PROJECTNAME /分支机构/树干/项目/代码/ codeproject1
PROJECTNAME /分支机构/树干/项目/代码/ codeproject2
PROJECTNAME /分支机构/树干/项目/代码/ codeproject3
PROJECTNAME /分支机构/树干/项目/测试/ testproject1
PROJECTNAME /支链/中继/依赖PROJECTNAME /原型
项目名/...
和testproject1内,以下目录结构:
codeproject1 /
codeproject2 /
codeproject2 /网络
codeproject2 /网络/ MVC
codeproject3 /
codeproject3 /支持
我做的只是每个项目同样的事情,是在同一个根文件夹下它自己的文件夹。 沿着下面的内容:
解决方案文件夹
- 项目A文件夹
- ProjectA.Test文件夹
- 项目B文件夹
- ProjectB.Test文件夹
我总是对每个项目单独的测试项目。 部分原因是简单的我喜欢它的组织,但是我也经常碰到,我已经决定了打破库到它自己的解决方案,以便它可以通过其他的解决方案可重复使用的情况。 在这种情况下,具有库项目有它自己单独的测试项目中(而不是在单个项目的所有测试),使得它更容易打破该库了。