C# 测试项目应该放在哪里?

C# 测试项目应该放在哪里?,c#,.net,visual-studio,unit-testing,nunit,C#,.net,Visual Studio,Unit Testing,Nunit,我们有几个解决方案使用了一个名为DogService的项目,并将其作为项目参考添加到解决方案中 如果我想为DogService创建单元测试,并将其命名为DogService.tests,我将实际将该项目放置在何处 项目的单元测试是否应该包含在引用该项目的每个解决方案中?取决于您如何使用DogService。但是,如果dogservice的任何更改可以来自任何解决方案,那么每个解决方案都应该添加单元测试。一般来说,构建像 /Lib /DogService

我们有几个解决方案使用了一个名为DogService的项目,并将其作为项目参考添加到解决方案中

如果我想为DogService创建单元测试,并将其命名为DogService.tests,我将实际将该项目放置在何处


项目的单元测试是否应该包含在引用该项目的每个解决方案中?

取决于您如何使用DogService。但是,如果dogservice的任何更改可以来自任何解决方案,那么每个解决方案都应该添加单元测试。一般来说,构建像

    /Lib
       /DogService
          /DogService
          /DogServiceTests

   /MainProject/...
这是经过优化的,可以很好地与以下各项配合使用:-

此外,连续构建工具随后将其作为pull请求的一部分进行构建,并运行所有库的测试,以便将其合并到每个库的主库中


或者,使用专用nuget存储库将库作为预构建程序集分发。如果这样做,就不需要在每个解决方案中进行测试。唯一的缺点是跨多个库进行更改可能会有点麻烦

IMO,它们应该与DogService项目放在同一个解决方案中。仅引用DogService.dll的项目不应测试DogService项目本身。@itsme86多个解决方案将DogService作为项目引用引用,所有解决方案是否也应获得测试项目?答案完全基于观点,但由于您使用的是项目引用,并且能够更改代码,那么是的,您应该包括单元测试项目,以便在代码更改时可以更新和运行单元测试。测试项目是否应该与dogservice项目位于同一物理目录中?物理位置并不重要-通常我喜欢将其作为项目的同级文件夹,但是.sln文件为您解决了这一问题,所以在对您最有意义的地方:)如果您确实使用gitsubrep,在此时,请使用branch
issue/142