运行单元测试时出现奇怪的.net 4.0异常

vdh*_*ant 14 unit-testing moq .net-4.0

尝试使用moq 3.1在VS2010下使用.net 4.0运行我的单元测试时,我收到以下异常.

尝试使用安全透明方法'SPPD.Backend.DataAccess.Test.Specs_for_Core.When_using_base.Can_create_mapper()'来访问安全关键方法'Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull(System.Object)'失败.

程序集"SPPD.Backend.DataAccess.Test,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null"标记为AllowPartiallyTrustedCallersAttribute,并使用2级安全透明度模型.2级透明度导致AllowPartiallyTrustedCallers程序集中的所有方法默认情况下变为透明安全性,这可能是此异常的原因.

我正在运行的测试非常简单,看起来如下所示:

    [TestMethod]
    public void Can_create_mapper()
    {
        this.SetupTest();

        var mockMapper = new Moq.Mock<IMapper>().Object;
        this._Resolver.Setup(x => x.Resolve<IMapper>()).Returns(mockMapper).Verifiable();

        var testBaseDa = new TestBaseDa();
        var result = testBaseDa.TestCreateMapper<IMapper>();

        Assert.IsNotNull(result);  //<<< THROWS EXCEPTION HERE 
        Assert.AreSame(mockMapper, result);

        this._Resolver.Verify();
    }
Run Code Online (Sandbox Code Playgroud)

我不知道这意味着什么,我一直在环顾四周,对这个话题一无所知.我找到的最接近的参考是这个http://dotnetzip.codeplex.com/Thread/View.aspx?ThreadId=80274,但它不是很明确他们做了什么修复它...

有人有任何想法?

cod*_*man 19

在引用项目的AssemblyInfo.cs中添加以下行

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
Run Code Online (Sandbox Code Playgroud)

  • 这对我有帮助. (5认同)

UpT*_*eek 4

MSDN:“.NET Framework 版本 4 引入了新的安全规则,这些规则会影响 AllowPartiallyTrustedCallersAttribute 属性的行为(请参阅安全透明代码,级别 2)。在 .NET Framework 4 中,所有代码默认都是安全透明的,即部分受信任。但是,您可以注释单个类型和成员以为其分配其他透明度属性。”

我自己没有遇到过这个问题,但也许您已经从 3.5 项目中导入了一些东西。

查看这些链接:

.NET Framework 4 中的安全更改

安全透明代码,2 级

AllowPartiallyTrustedCallersAttribute 类