【发布时间】:2016-05-24 20:30:24
【问题描述】:
我有这些项目/DLL:
-
mylibproject - 我正在测试的具有逻辑的项目 -
mylib_test项目 - nunit 测试项目测试mylib -
otherlib.dll-mylib使用的第 3 方 DLL -
otherlib_mock.dll- 我想在测试时使用的otherlib.dll的模拟。它包含otherlib.dll中具有相同接口的所有类型,只是它始终返回模拟数据,而不是实际执行otherlib.dll所做的工作。
我希望mylib 在常规操作中使用otherlib.dll,但是当从mylib_test 运行单元测试时,otherlib_mock.dll 将由mylib 使用。
目前,所有类型都与otherlib.dll 在同一个命名空间中,所以如果我修改mylib 以引用otherlib_mock.dll 而不是otherlib.dll - 一切都适用于模拟类型。可以以某种方式自动执行此操作以进行测试而不是常规操作吗?
选项2是:我有otherlib_mock.dll的代码。我可以将其命名空间更改为不同于otherlib.dll,然后我可以在mylib 中引用它们。现在,我通过在命名空间之间切换来在模拟和非模拟行为之间切换。我可以将using 行放在#if 和#else 中,以便在常规操作中使用otherlib.dll 命名空间,在运行测试时使用otherlib_mock.dll 命名空间?
【问题讨论】:
标签: c# .net unit-testing nunit shared-libraries