繁体   English   中英

单元测试代码的最佳位置

[英]Best location for unit test code

我有一个多项目解决方案,我希望将单元测试应用到。 该项目封装良好,大多数单元测试仅使用他们正在测试的项目中的类。

我还有一些集成测试用例,用于测试多个项目的交互。

显然,我可以将所有测试代码放在一个单独的项目中,但我对创建一个在整个解决方案中具有依赖关系的Great Project的想法持谨慎态度。

为每个项目中的单元测试创​​建一个私有类是否更好,并且有一个单独的集成测试项目? 或者没有明显的建筑效益?

您应该将单元测试放入单独的程序集中。 通过这样做,您可以确保它们不属于任何已发布的产品。

如果您采用的惯例是测试项目的名称中包含单词Test ,那么在最终构建输出中删除外卡是一件简单的事情,以确保您不会发送测试程序集。

我对创建一个通过整个解决方案具有依赖性的Great Project的想法持谨慎态度

随着您的解决方案规模的扩大,您可以将测试分解为针对应用程序特定区域的程序集 - 您可以从单片测试程序集开始,然后在有意义的时候将其拆分。

拥有使用包含大约110个项目(包括单元测试项目)的解决方案的经验,我可能需要添加一些内容

  • 拥有许多小项目会增加您的构建时间,而不是拥有更大的项目。 根据编辑的大小和复杂程度,这可能是您担心的问题。

我使用过的一个实现使用了类似这样的项目结构:

- CompanyName.Feature
- CompanyName.Fetaure.Test.Unit
- CompanyName.Feature.Test.Integration
- CompanyName.Feature.Test.Load
- etc...

与整体测试项目相比,这种粒度级别是一种改进; 但是,我觉得有更好的方法

而不是打破所有测试, 而是确保您按功能测试功能。 那时我会很自在地将我的单元和集成测试放在同一个项目中,映射到不同的文件夹。 理想情况下是这样的:

 - CompanyName.Feature
 - CompanyName.Feature.Test
      \Unit
      \Integration
      \Load
      \etc...
  1. 假设您的代码库当前没有遇到循环依赖的某些问题,这也应该最小化跨代码库的引用。
  2. 如果您编写任何有助于测试的代码(即:生成测试数据) ,您也可以在单元和集成测试之间共享它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM