c# - 由于编译速度慢,使用大型 C# 解决方案的 TDD 几乎不可能

标签 c# performance tdd compilation

我正在开发一个目前有 60 个程序集的大型解决方案。有许多程序集定义了解决方案的通用部分,然后是系统的一些入口点程序集。

TDD 目前几乎是不可能的,因为最低域层中的单行更改会强制重建几乎整个解决方案,因为测试程序集引用了解决方案的各个层。

什么是最佳实践,将构建时间从目前的 75 秒缩短到更长 可接受的 5 秒左右?这将使 TDD 再次可行。

在进行单元测试时,一些类需要由其他程序集的接口(interface)定义的模拟,因此必须在测试程序集中引用。因此,对其他程序集的单一引用并不总是可行的,除非是在解决方案的最低级别。

最佳答案

恕我直言,问题出在这里:“因为测试程序集引用了解决方案的各个层。”
每个要测试的组件都应该有一个测试组件。
当您仍然在每个测试程序集中引用许多程序集时,您会遇到不同的问题:您正在创建集成测试。这不是您想要在 TDD 中执行的操作。

除了更新你的问题:
通常,您会在另一个程序集中定义接口(interface)而不是实现。因此,对低级别类的实现的更改应该不会影响使用这些接口(interface)的更高级别的类...

关于c# - 由于编译速度慢,使用大型 C# 解决方案的 TDD 几乎不可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5028882/

相关文章:

c# - COM 库初始化失败,C# 代码为 0x80010106

c# - 如何防止用户在文本框中输入特殊字符

c# - 使用 jQuery 从标记字符串中获取一些文本

performance - LinkedList 与 HashMap 的摊销性能

performance - 大字段名称和日期类型对Elasticsearch的性能影响

c - 使用 posix 线程的可测试 C 应用程序

c++ - 测试相等运算符

c# - .Net 深度克隆 - 最好的方法是什么?

performance - 加速删除工作表上隐藏行的代码

unit-testing - 为什么使用集成测试而不是单元测试是一个坏主意?