我有一个使用垫片的非常简单的测试,但是运行测试时,我得到了“ ShimNotSupportedException”。我正在使用VS2013 Ultimate,但未调试。

[TestMethod]
public void GetDateTimeString_ReturnDTString_SetDateTime_CurrentYear()
{
    using (ShimsContext.Create())
    {
        // Set 'UtcNow' to 1 March 2014
        ShimDateTime.UtcNowGet = () => new DateTime(2014, 3, 1, 5, 30, 28);

        var inputDate = new DateTime(2014, 06, 20, 18, 33, 50);

        // Act
        var actual = CustomTimeHelper.GetDateTimeString(inputDate);

        // Assert
        Assert.IsNotNull(actual);
    }
}


我尝试了以下失败的尝试


以管理员身份运行VS
从引用中删除System.4.0.0.0.Fakes,从Fakes目录中删除System.fakes,并从FakeAssemblies中删除所有System.4.0.0.0.Fakes文件,然后从引用中右键单击“ Add-fakes Assembly”菜单重新创建伪造品
我没有使用测试设置文件
我已从选项菜单禁用了IntelliTrace
我做了一个干净的解决方案并重建
我已经通过“测试”菜单项和“测试资源管理器”执行了“运行所有测试”
我只运行了一个已损坏的测试
我确实有一个警告说,当进行调查时,“无法生成某些伪造”(通过在System.Fakes文件中设置Diagnostic =“ True”,System.DateTime似乎很好,因为它未在类列表中列出)不能从
我已经在其他计算机上尝试了Release和Debug


如果有人对可能发生的事情或如何解决问题有任何想法,将不胜感激。

最佳答案

该问题来自引用Microsoft.QualityTools.Testing.Fakes的11.0.0.0版本。

以下步骤为我解决了该问题。


从项目中删除所有* .fakes引用
删除Fakes文件夹中的所有文件
重新添加Microsoft.QualityTools.Testing.Fakes版本12.0.0.0
重新生成您在步骤1中删除的假程序集

关于c# - 测试失败,并显示ShimNotSupportedException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29253259/

10-13 08:28