2010-04-22 7 views
14

moq 3.1을 사용하여 VS2010에서 .net 4.0을 사용하여 단위 테스트를 실행하려고 할 때 다음 예외가 발생합니다. 보안 중요한 방법 'Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull (시스템에 액세스 할 수있는 보안 투명한 방법 'SPPD.Backend.DataAccess.Test.Specs_for_Core.When_using_base.Can_create_mapper() ' 에 의해단위 테스트를 실행할 때 이상한 .net 4.0 예외가 발생했습니다.

시도 .Object) ' 실패했습니다.

조립 'SPPD.Backend.DataAccess.Test, 버전 = 1.0.0.0, 중립 문화 = 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(); 
    } 

나는 이것이 내가이 주제에 거의 주위를 찾고있다 발견 한 의미 무슨 생각이 없다 . 내가 찾은 가장 가까운 참조는이 http://dotnetzip.codeplex.com/Thread/View.aspx?ThreadId=80274이지만 그 문제를 해결하기 위해 무엇을했는지에 대해서는 명확하지 않습니다.

누구나 아이디어가 있습니까?

답변

4

MSDN : ".NET Framework 버전 4에는 AllowPartiallyTrustedCallersAttribute 특성의 동작에 영향을주는 새로운 보안 규칙이 도입되었습니다. (보안 투명 코드, 수준 2 참조) .NET Framework 4에서 모든 코드의 기본값은 security- 투명하지만 부분적으로 신뢰할 수 있지만 개별 유형과 구성원에게 주석을 추가하여 다른 투명성 속성을 할당 할 수 있습니다. "

이 프로젝트를 직접 만나지는 않았지만 3.5 프로젝트에서 가져온 어쩌면 당신이 가져온 것일 수 있습니다. 이 링크 밖으로

체크인 :

Security Changes in the .NET Framework 4

Security-Transparent Code, Level 2

AllowPartiallyTrustedCallersAttribute Class

+0

는 내가 기존 프로젝트에서 아무것도 가져 생각하지 않습니다이 다음 줄을 추가합니다 vs2010에서 ... 던져 질 예외는 동적으로 생성 된 Moq 객체 인 결과 변수에 있습니다 ...나는 Moq의 최신 빌드를 사용하여 문제를 수정했는지 알았지 만 아직까지는 3.5 이하로 구축되고 있음을 알고 있습니다 ... –

3

이 MOQ의 최신 버전에서 수정되었습니다 (실제로 DynamicProxy에서 수정했다). 최신 v4 베타를 사용해보세요. 나는 처음부터이 솔루션/프로젝트를 생성로 참조 된 프로젝트의 AssemblyInfo.cs에서

http://moq.me

19

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

이것은 나에게 도움이되었습니다. –

관련 문제