在使用 Moles 和 MsTest 时,我发现了一种可以解释(但令人沮丧)的行为。
想象一下以下情况:
- “测试 DLL A”在 mscorlib 上使用 Moles
- “测试 DLL B”在 mscorlib 上使用 Moles
为了缩短编译时间,在这两种情况下,我们都在编辑 .moles 文件,以便询问单个类的痣的生成。
当我们这样做时,我们的项目将编译得非常好。
但是当我们运行解决方案的测试时,MsTest 过程将是:
- 复制“Out”文件夹中的所有 DLL
- 在“Out”文件夹中运行测试
因此,复制到“Out”文件夹将尝试复制 mscorlib.Moles.dll 的两个版本(一个是类型 1,一个是类型 2),当然,第二个会覆盖第一个。
所以我对“Test DLL A”的测试将失败,因为我的鼹鼠组装不正确。
当然有两个简单的解决方法:
- 在每个 .moles 文件中包含所有需要的类型(在所有项目中)
- 要么不使用类型过滤
你也遇到过这个“问题”吗?还有其他解决方案吗?
非常感谢 !
Pierre-Emmanuel DotNetHub 用户组负责人