使用ShimNotSupportedException测试失败

时间:2015-03-25 10:35:47

标签: c# unit-testing visual-studio-2013 microsoft-fakes

我有一个非常简单的测试,使用垫片但是当我运行测试时,我得到了一个" 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来自引用,System.fakes来自Fakes目录,所有System.4.0.0.0.Fakes文件来自FakeAssemblies,并通过右键单击重新创建假冒"添加 - 假货组装"参考菜单
  • 我没有使用测试设置文件
  • 我已从选项菜单中禁用了IntelliTrace
  • 我做了一个干净的解决方案并重建
  • 我已经完成了"运行所有测试"通过Test菜单项和Test Explorer
  • 我只运行了一次破坏的单一测试
  • 我有一个警告说"有些假货无法生成"调查时(通过在System.Fakes文件中设置Diagnostic =" True" System.DateTime似乎没问题,因为它没有列在无法生成的类列表中
  • 我尝试过Release和Debug以及其他计算机

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

1 个答案:

答案 0 :(得分:6)

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

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

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