我正在考虑将单元/集成测试项目放在哪里。我遵循每个项目1个测试项目的约定。
我能想到3种方式,它们都对我来说很好,这使得选择有点困难 :-)
- 将测试项目放在要测试的项目的 Tests 子文件夹下。
- 将测试项目放在要测试的项目旁边,一个名为“项目”.Tests 的文件夹中。我相信这是 Roy Osherove 推荐的做法。
- 将所有测试项目放在根目录的子文件夹中。例如:\Tests\"项目".Tests
- 还有其他什么方法吗?
您选择了哪个方法以及为什么?
我正在考虑将单元/集成测试项目放在哪里。我遵循每个项目1个测试项目的约定。
我能想到3种方式,它们都对我来说很好,这使得选择有点困难 :-)
您选择了哪个方法以及为什么?
选项2是我首选的。除了其他任何事情之外,当你创建一个新的类库项目时,它就是默认选项 - 它位于与生产项目相同的解决方案目录下。
为了反驳没有测试代码的项目检出的论点,我发现很少只检出一个项目而不是整个解决方案。如果你的机构更加“以项目为基础”而不是“以解决方案为基础”,那可能会改变情况。
我喜欢将所有项目在物理上放置在同一级别。我没有什么大的争议,只是为了简单起见。毕竟,Visual Studio会在同一级别显示所有项目。
.../Project/Project.Web/ .../Project/Project.Model/ .../Project/Project.DataAccess/ .../Project/Project.UnitTest/ 等等
测试项目放在“项目”。Tests文件夹中,与其测试的项目并排放置。我相信这是Roy Osherove所推荐的。
这是我个人最喜欢的方法。它最清晰地传达了意图,并且让你很容易一眼看到哪些测试项目与哪些项目相关联,如果你在目录中查看它们或有某种原因将项目分组到一个解决方案中。
在Visual Studio 2010 Asp.Net MVC解决方案中,默认情况下是同一解决方案中的不同项目。这对于测试编译和所有引用非常有帮助。
我认为选项2是最佳选择。测试是记录代码的好方法。它们清晰地表明了方法和类的语义。程序员应该很容易跳转到某个他觉得可疑的方法的测试代码。
另一方面,将测试代码保留在同一项目中可能会使编译后的二进制输出变得更大,并迫使项目具有仅由测试代码需要的依赖项。