c# - 单元测试代码的最佳位置

标签 c# unit-testing testing nunit

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

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

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

是不是每个项目都创建一个私有(private)类进行单元测试,单独一个项目进行集成测试?还是没有明显的架构优势?

最佳答案

我有使用包含大约 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. 这还有一个好处,如果您编写任何有助于测试的代码(即:测试数据的生成),您可以在单元测试和集成测试之间共享它。

关于c# - 单元测试代码的最佳位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19629959/

相关文章:

C# WPF DataBinding "Can' t 查找属性"

unit-testing - 模拟 IO 操作 : getArgs and putStrLn

angularjs - Protractor :don't wait for elements to appears in Dom

ajax - Angular 4 : Using mockRespond with RxJS Observables

c# - Entity Framework 在调用 savechanges 时复制

c# - 停止数据集进入工具箱

c# - 等待非异步方法

android - 由于 AutofillManager,Robolectric 无法运行测试

python - 如何针对大量数据测试相同的断言

performance - c++,cin 有问题吗?