使用ShimNotSupportedException测试失败

Mar*_*ang 1 c# unit-testing microsoft-fakes visual-studio-2013

我有一个非常简单的测试,使用垫片但是当我运行测试时,我得到一个"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);               
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过以下但没有成功

  • 作为管理员运行VS.
  • 从引用中删除System.4.0.0.0.Fakes,从Fakes目录中删除System.fakes,从FakeAssemblies中删除所有System.4.0.0.0.Fakes文件,并从引用中右击"Add-fakes assembly"菜单重新创建假名
  • 我没有使用测试设置文件
  • 我从选项菜单中禁用了IntelliTrace
  • 我做了一个干净的解决方案和重建
  • 我通过Test菜单项和Test Explorer执行了"Run All Tests"
  • 我只运行了一次破坏的单一测试
  • 在调查时(通过在System.Fakes文件中设置Diagnostic ="True",我有一个警告说"无法生成一些伪造",System.DateTime似乎很好,因为它没有列在类列表中无法生成的
  • 我试过Release和Debug以及其他计算机

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

Mar*_*ang 6

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

以下步骤为我解决了这个问题.

  1. 从项目中删除所有*.fakes引用
  2. 删除Fakes文件夹中的所有文件
  3. 重新添加Microsoft.QualityTools.Testing.Fakes版本12.0.0.0
  4. 重新生成在步骤1中删除的假装配