大型Visual Studio解决方案中的单元/集成测试组织

geo*_*off 5 integration-testing unit-testing project-organization visual-studio-2010

我开始为一个非常大的Visual Studio解决方案开发和组织测试.(是的,我知道测试应该与代码一起开发,而不是在项目接近完成时开发,但事情就是它们.)

我在Visual Studio解决方案中看到了有关组织单元测试的类似问题,但我也没有看到任何地址集成测试.我希望得到关于在何处放置测试项目的一些指导,以便它们不会混乱已经很大的代码库.

这是解决方案中基本的事物层次结构.(所有未以.proj结尾的项目都是项目或解决方案文件夹中的文件夹.)

  • HardwareServices
    • HardwareService1
      • HardwareService1.Core.proj
      • HardwareService1.Host.proj
      • HardwareService1.Service.proj
    • HardwareService2
      • HardwareService2.Core.proj
      • HardwareService2.Host.proj
      • HardwareService2.Service.proj
  • 基础设施
    • MyApp.Database.proj
    • MyApp.Infrastructure.proj
    • MyApp.ReportViewer.proj
    • MyApp.SettingsManager.proj
  • AppModules
    • AppModule1.proj
      • 共同
      • 报告
      • 服务
      • 的ViewModels
      • 查看
    • AppModule2.proj(与其他AppModules类似的结构)
    • AppModule3.proj(与其他AppModules类似的结构)
  • 模块
    • ComputeEngine.proj
    • Footer.proj
    • Header.proj
    • CommonServices.proj

我的想法是创建一个名为"Tests"的解决方案文件夹,然后模仿上面的层次结构,为每个生产代码项目制作一个测试项目.在每个测试项目中,我将创建名为"UnitTests"和"IntegrationTests"的文件夹.

我的重点是建立一个统一的命名/组织方案,以便有没有什么地方新的考验应该去哪里可以找到现有的测试歧义.由于大尺寸项目/应用的,我想获得的结构非常稳固出了大门,使得它不是一个痛苦之后.

感谢您的时间和建议.

Mar*_*man 6

我们公司采用的命名约定是使用projectName.Tests.UnitprojectName.Tests.Integration

根据您现有的结构,您将拥有如下内容:

  • 硬件服务1
    • HardwareService1.Core.proj
    • HardwareService1.Host.proj
    • HardwareService1.Service.proj
    • 测试
      • HardwareService1.Core.Tests.Unit
      • HardwareService1.Core.Tests.Integration

如果将测试文件夹与根文件夹一起保留,则不必再次模仿完整的结构,因为测试与相应的项目是正确的。

边注

通过使项目名称具有一致的 Tests.Unit,它有助于在构建脚本中运行单元测试,因为您可以使用通配符搜索来运行测试,例如**\*tests.unit*.dll

归根结底,项目结构可能非常主观,因此请做对您的环境有意义并且对您的团队有意义的事情。