在visual studio解决方案中为共享库组织单元测试项目

时间:2017-04-25 18:26:10

标签: c# visual-studio unit-testing

希望在一系列新解决方案中包含单元测试。不知道如何构建它们。

不确定它是否真的重要,尽管这些都是.Net C#项目。

我已经阅读了许多类似的答案,例如此Organization of Unit Tests in Visual Studio和此Do you put unit tests in same project or another project?,但似乎没有一个答案可以解决在多个解决方案中共享的项目

鉴于以下2个解决方案的结构,创建单元测试项目的最佳实践是什么。

解决方案#1

  • 数据 - 解决方案文件夹
    • MyData - 项目
  • 全球 - 解决方案文件夹
    • Global.Project.1 - 项目
    • Global.Project.2 - 项目
    • Global.Project.3 - 项目
    • Global.Project.4 - 项目
  • 服务 - 解决方案文件夹
    • Service.Project.1 - 项目
    • Service.Project.2 - project
  • Web - 解决方案文件夹
    • MyWebsite - project

解决方案#2

  • 数据 - 解决方案文件夹
    • MyData - 项目
  • 全球 - 解决方案文件夹
    • Global.Project.1 - 项目
    • Global.Project.2 - 项目
  • 服务 - 解决方案文件夹
    • Service.Project.1 - 项目
  • App - 解决方案文件夹
    • MyConsoleApp - 项目

请注意,解决方案之间共享了一些项目。

所以问题是,这些问题的典型方法是什么?

我们会为每个项目创建一个测试项目吗?

或每个解决方案的单个测试项目?

或者两者之间有一些混合,也许是他们自己的解决方案

在不同的方法中会想到任何陷阱?

1 个答案:

答案 0 :(得分:1)

我一直与项目和单元测试项目一对一完成 任何可以站在自己身上的项目都需要自己测试。否则,您将它与测试项目中的所有其他代码耦合。

为了测试需要多个项目的代码,您可以模拟其他包中的对象,或者您可以遵循明确的继承层次结构。即Web中的测试可以使用Data中的类,但不应该测试Data的功能 您还可以为组合测试创建一个新的测试项目,这在集成测试的场景中通常更有用,您正在测试实时而非生产系统。

在解决方案中,这些文件将分为一个Test文件夹,该文件夹将被分成与项目本身相同的文件夹。即您的Test文件夹将包含Data,Global,Services和Web作为单独的文件夹。

拥有主解决方案也很有用。包含所有项目的一个。通过这种方式,您可以确保对Data的更改不会破坏其他解决方案的Web测试,即使它不会破坏您当前的测试。

如果你真正在做的是创建一些共享库,你应该考虑托管你自己的nuget存储库。这有助于理清共享代码中的版本控制问题。