【问题标题】:Unit testing with an external host process dependency具有外部主机进程依赖性的单元测试
【发布时间】:2010-02-03 09:53:46
【问题描述】:
我想针对 .Net 类库程序集中的一个类运行一些 NUnit 单元测试,该程序集被设计为由外部进程(不受我控制)托管并在运行时加载。
我要测试的类派生自宿主 exe 中定义的类,该类需要在宿主进程中实例化。任何在宿主进程之外实例化基类派生的尝试都会失败并出现异常。
因此,我无法通过简单地加载程序集并实例化类来测试 NUnit gui 或控制台测试主机中的类。有人对我如何执行这些测试有任何建议吗?
【问题讨论】:
标签:
.net
process
nunit
dependencies
host
【解决方案1】:
我可能会将这个类分成两个类 - 一个从外部进程中的类型派生的“外部”类,以及一个完成所有工作但不从您所做的任何事情继承的“内部”类不能控制。
然后,测试内部类,让外部类尽可能没有逻辑。
当您可以以某种方式将代码与依赖项隔离时,单元测试几乎总是更容易。
【解决方案2】:
如果你想测试你的源代码和你的程序内部你有那些外部类方法调用,也许模拟整个外部进程会解决你的问题。
您可以将模拟设计为表现得像您的主机类。
包括:
- 模拟加载运行时库(您感兴趣的那些)
- 模拟特定方法的所有可能输出
- 模拟异常
由于我不是 .NET 开发人员,所以我不熟悉细节,但我知道 .NET 中的模拟引擎非常强大。