gpt4 book ai didi

c# - Release模式下的测试未使用 Shimmed 方法

转载 作者:太空狗 更新时间:2023-10-29 23:50:11 26 4
gpt4 key购买 nike

在 Visual Studio 2015 中,我有一个测试项目,我向其中添加了一个假程序集。

在单元测试本身中,我为静态泛型方法创建了一个垫片,该方法将实例返回到泛型类型,例如:

using (ShimsContext.Create())
{
ShimStaticClass.TheMethod<MyType>(() => instanceOfMyType);

// ... code that uses StaticClass.TheMethod here ...
}

当解决方案在 Debug模式下构建时,测试运行良好并通过。但是,当解决方案以 Release模式构建时,填充版本的 TheMethod 不会被调用,这会导致测试失败。

我知道 shimmed 方法没有被调用,因为我已经将它更改为抛出异常:

using (ShimsContext.Create())
{
ShimForStaticClass.TheMethod<MyType>(() =>
{
throw new InvalidOperationException("Shim was called");
});

// ... code that uses StaticClass.TheMethod here ...
}

并且不会抛出这个异常。

我已经为假的打开了诊断日志记录和嘈杂的冗长,但构建日志没有显示任何问题。

最佳答案

您是否尝试过使用 MethodImpl 属性并传递 ImplOptions.NoInlining

[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]

关于c# - Release模式下的测试未使用 Shimmed 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34007429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com