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)
MSDN:“.NET Framework 版本 4 引入了新的安全规则,这些规则会影响 AllowPartiallyTrustedCallersAttribute 属性的行为(请参阅安全透明代码,级别 2)。在 .NET Framework 4 中,所有代码默认都是安全透明的,即部分受信任。但是,您可以注释单个类型和成员以为其分配其他透明度属性。”
我自己没有遇到过这个问题,但也许您已经从 3.5 项目中导入了一些东西。
查看这些链接:
AllowPartiallyTrustedCallersAttribute 类