5

我目前正在为我的项目中的每个程序集创建一个配对的单元测试程序集,两者都在同一个文件夹中。

  • 我的项目/我的项目.csproj
  • MyProject.Test/MyProject.Test.csproj

查看开源项目,我看到一些较小的项目将所有测试放在一个程序集中,而其他项目则像我的一样将其拆分。我正在处理一个大型解决方案,因此将所有测试放在一个项目中会非常疯狂。

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

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

谢谢

4

4 回答 4

4

我以相同的方式执行此操作,我更改了每个测试项目的默认命名空间以匹配生产项目的命名空间。所以类的测试X.Y.Foo是 inX.Y.FooTest而不是X.Y.Test.FooTest- 这意味着您需要更少的 using 指令,并且通常会使事情变得更简单。

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

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

于 2009-08-16T18:17:01.510 回答
3

我建议尽量少做单元测试项目。原因是您创建的每一个都会增加至少十秒的编译时间。在一个大项目中,它开始累加。

这是我使用的目录结构:

projectName/branches/trunk/projects/code/codeproject1
projectName/branches/trunk/projects/code/codeproject2
projectName/branches/trunk/projects/code/codeproject3
projectName/branches/trunk/projects/Tests/testproject1
projectName/branches/trunk/依赖项 projectName/prototypes
projectName/...

在 testproject1 中,目录结构如下:

codeproject1/
codeproject2/
codeproject2/web
codeproject2/web/mvc
codeproject3/
codeproject3/support

于 2009-08-16T19:03:14.237 回答
2

我做同样的事情,除了每个项目都在同一个根文件夹下的它自己的文件夹中。以下内容:

解决方案文件夹

  • 项目A文件夹
  • ProjectA.Test 文件夹
  • 项目 B 文件夹
  • ProjectB.Test 文件夹
于 2009-08-16T17:54:03.513 回答
1

每个项目我总是有一个单独的测试项目。部分原因是我喜欢它的组织,但我也经常遇到我决定将库分解成自己的解决方案以便其他解决方案重用它的情况。在这些情况下,让库项目拥有自己的单独测试项目(而不是单个项目中的所有测试)可以更容易地拆分该库。

于 2009-08-16T18:35:03.587 回答