2010-04-22 110 views
14

当我尝试在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,但它不是很清楚他们做了什么修复它...

任何人有任何想法?

回答

4

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

自己没有遇到过这个,但也许你已经从一个3.5项目导入了somehing。

请查看以下链接:

Security Changes in the .NET Framework 4

Security-Transparent Code, Level 2

AllowPartiallyTrustedCallersAttribute Class

+0

我不认为我进口从现有项目什么都可以,我从头开始创建这个解决方案/项目在vs2010中...抛出的异常在结果变量上,这是一个动态创建的Moq对象...我尝试使用Moq的最新版本来查看它是否修复了这些问题,但它并没有,据我所知,他们仍然在3.5以下... ... – 2010-04-27 06:46:54

3

这已被固定在起订量的最新版本(这是在DynamicProxy修复实际上)。 请尝试使用最新的v4 Beta。

http://moq.me

19

在所涉及项目的AssemblyInfo.cs中添加这个下面一行

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)] 
+5

这对我有帮助。 – 2011-11-02 21:31:50

相关问题