在Visual Studio 2015中,我有一个测试项目,我向其中添加了一个虚假程序集。
在单元测试中,我创建了一个针对静态泛型方法的shim,该方法返回泛型类型的实例,例如:
using (ShimsContext.Create())
{
ShimStaticClass.TheMethod<MyType>(() => instanceOfMyType);
// ... code that uses StaticClass.TheMethod here ...
}
当以调试模式构建解决方案时,测试可以正常运行并通过。然而,当以发布模式构建解决方案时,被屏蔽的TheMethod版本不会被调用,这导致测试失败。
我知道被屏蔽的方法没有被调用,因为我已经通过以下方式将其更改为抛出异常:
using (ShimsContext.Create())
{
ShimForStaticClass.TheMethod<MyType>(() =>
{
throw new InvalidOperationException("Shim was called");
});
// ... code that uses StaticClass.TheMethod here ...
}
并且这个异常没有被抛出。
我已经为该模拟开启了诊断日志和嘈杂的详细程度,但构建日志没有显示任何问题。