2010-04-22 23 views
14

Tôi nhận được ngoại lệ sau khi cố gắng chạy thử nghiệm đơn vị của mình bằng cách sử dụng .net 4.0 trong VS2010 với moq 3.1.Ngoại lệ 4.0 ngoại lệ khi chạy thử nghiệm đơn vị

Nỗ lực của an ninh phương pháp minh bạch 'SPPD.Backend.DataAccess.Test.Specs_for_Core.When_using_base.Can_create_mapper()' để truy cập an ninh critical method 'Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull (Hệ thống .Object) ' không thành công.

hội 'SPPD.Backend.DataAccess.Test, Version = 1.0.0.0, Culture = trung tính, PublicKeyToken = null' được đánh dấu bằng các AllowPartiallyTrustedCallersAttribute, và sử dụng mức 2 an ninh mô hình tính minh bạch. Mức độ minh bạch ở mức độkhiến tất cả các phương thức trong các nhóm AllowPartiallyTrustedCallers để trở thành bảo mật minh bạch theo mặc định, có thể là nguyên nhân của trường hợp ngoại lệ này là .

Các thử nghiệm Tôi đang chạy thực sự thẳng về phía trước và trông giống như sau:

[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(); 
    } 

Tôi không có ý tưởng gì này có nghĩa và tôi đã được tìm kiếm xung quanh và đã tìm thấy rất ít về chủ đề này . Các tài liệu tham khảo gần nhất tôi đã tìm thấy là điều này http://dotnetzip.codeplex.com/Thread/View.aspx?ThreadId=80274 nhưng nó không phải rất rõ ràng về những gì họ đã làm để sửa chữa nó ...

Bất cứ ai có bất kỳ ý tưởng ??

Trả lời

4

MSDN: "Khuôn khổ .NET phiên bản 4 giới thiệu các quy tắc bảo mật mới ảnh hưởng đến hành vi của thuộc tính AllowPartiallyTrustedCallersAttribute (xem Mã bảo mật trong suốt, Cấp 2). Trong Khuôn khổ .NET 4, tất cả các mã mặc định là bảo mật- minh bạch, có nghĩa là, một phần đáng tin cậy. Tuy nhiên, bạn có thể chú thích từng loại và các thành viên để gán cho chúng các thuộc tính minh bạch khác. "

Không tự mình gặp phải điều này, nhưng có lẽ bạn đã nhập nội dung từ dự án 3.5.

Kiểm tra những liên kết này:

Security Changes in the .NET Framework 4

Security-Transparent Code, Level 2

AllowPartiallyTrustedCallersAttribute Class

+0

Tôi không nghĩ rằng tôi nhập khẩu bất cứ thứ gì từ một dự án hiện, như tôi đã tạo ra giải pháp này/dự án từ đầu trong vs2010 ... Ngoại lệ được ném vào biến kết quả là một đối tượng Moq được tạo động ...Tôi đã thử sử dụng các bản dựng mới nhất của Moq để xem nó có khắc phục được các vấn đề không, nhưng nó không và theo như tôi biết họ vẫn đang xây dựng dưới 3.5 ... –

3

này đã được cố định trong phiên bản mới nhất của Moq (đó là một sửa chữa trong DynamicProxy trên thực tế). Vui lòng thử bản beta v4 Beta mới nhất.

http://moq.me

19

Trong AssemblyInfo.cs của dự án tham khảo thêm dòng sau này

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

Điều này đã giúp tôi. –

Các vấn đề liên quan