运行单元测试时出现奇怪的.net 4.0异常
当我尝试在VS2010下使用.net 4.0和moq 3.1运行我的单元测试时,我收到以下异常。运行单元测试时出现奇怪的.net 4.0异常
尝试通过安全透明方法 'SPPD.Backend.DataAccess.Test.Specs_for_Core.When_using_base.Can_create_mapper()' 访问安全临界方法 “Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull(系统.Object)' 失败。
大会 'SPPD.Backend.DataAccess.Test, 版本= 1.0.0.0,文化=中立, 公钥=空' 标有 的 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();
}
我不知道这是什么意思,我一直环顾四周,发现很少的话题。我发现最接近的参考是这个http://dotnetzip.codeplex.com/Thread/View.aspx?ThreadId=80274,但它不是很清楚他们做了什么修复它...
任何人有任何想法?
MSDN:“.NET Framework版本4引入了影响AllowPartiallyTrustedCallersAttribute属性的行为的新安全规则(请参阅Security-Transparent Code,Level 2)。在.NET Framework 4中,所有代码默认为安全级别,透明,即部分可信,但是,您可以注释各个类型和成员,为其分配其他透明度属性。“
自己没有遇到过这个,但也许你已经从一个3.5项目导入了somehing。
请查看以下链接:
Security Changes in the .NET Framework 4
在所涉及项目的AssemblyInfo.cs中添加这个下面一行
[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
这对我有帮助。 – 2011-11-02 21:31:50
我不认为我进口从现有项目什么都可以,我从头开始创建这个解决方案/项目在vs2010中...抛出的异常在结果变量上,这是一个动态创建的Moq对象...我尝试使用Moq的最新版本来查看它是否修复了这些问题,但它并没有,据我所知,他们仍然在3.5以下... ... – 2010-04-27 06:46:54