【问题标题】:Organizing unit test projects for shared libraries in visual studio solutions [closed]在 Visual Studio 解决方案中为共享库组织单元测试项目 [关闭]
【发布时间】:2017-04-25 18:26:10
【问题描述】:

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

不确定这是否真的很重要,尽管这些都是 .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 - 项目
  • Web - 解决方案文件夹
    • 我的网站 - 项目

解决方案 #2

  • 数据 - 解决方案文件夹
    • MyData - 项目
  • 全局 - 解决方案文件夹
    • Global.Project.1 - 项目
    • Global.Project.2 - 项目
  • 服务 - 解决方案文件夹
    • Service.Project.1 - 项目
  • 应用程序 - 解决方案文件夹
    • MyConsoleApp - 项目

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

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

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

或者每个解决方案一个测试项目?

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

对于不同的方法,你想到了什么陷阱?

【问题讨论】:

  • 不确定这是“太宽泛” - 需要详细说明吗?它比引用的其他问题更简洁。
  • 我猜它比“太宽泛”更自以为是。我怀疑是否有“正确”甚至“常见”的方式来做到这一点,这主要是由个人喜好驱动的。在我们公司,我们实际上是为每个软件组件实现一个测试项目,其中每个组件都包含一堆程序集。
  • 可能 - 试图让它不那么固执己见;必须有一些“典型”的方法来做到这一点。并不是有几十种不同的方法可以实现我的要求。
  • 即使这样,问题也不符合 SO 的规则,因为没有“正确答案”可供选择。
  • 然而,所引用的两个问题都装饰了多个答案,并且在它们之间获得了许多赞成票。我已经走得更远了,想了解测试共享代码。

标签: c# visual-studio unit-testing


【解决方案1】:

我总是与项目和单元测试项目一对一地进行。
任何可以独立存在的项目都需要自己进行测试。否则,您会将其与测试项目中的所有其他代码耦合。

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

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

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


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

【讨论】:

  • 很好的回应,非常感谢。我一直在按照您的建议进行,但随着团队采用更多的单元测试,不容易发现陷阱。托管我们自己的 nuget 是我们已经讨论过的事情,虽然有点远。不过我肯定会调查的!
  • 将此标记为已接受 - 不是因为答案供不应求,而是因为它准确地给出了想法和理由。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多