Странное исключение .net 4.0 при запуске модульных тестов - PullRequest
14 голосов
/ 23 апреля 2010

Я получаю следующее исключение при попытке запустить мои юнит-тесты с использованием .net 4.0 под VS2010 с moq 3.1.

Попытка прозрачным методом безопасности '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, Версия = 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, но не очень ясно, что они сделали, чтобы исправить это ...

У кого-нибудь есть идеи ??

Ответы [ 3 ]

19 голосов
/ 24 апреля 2011

В AssemblyInfo.cs указанного проекта добавьте следующую строку

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
4 голосов
/ 27 апреля 2010

MSDN: ".NET Framework версии 4 представляет новые правила безопасности, которые влияют на поведение атрибута AllowPartiallyTrustedCallersAttribute (см. Прозрачный код безопасности, уровень 2). В .NET Framework 4 весь код по умолчанию защищен -прозрачный, то есть частично доверенный. Однако вы можете аннотировать отдельные типы и элементы, назначая им другие атрибуты прозрачности. "

Сам с этим не сталкивался, но, возможно, вы что-то импортировали из проекта 3.5.

Проверьте эти ссылки:

Изменения безопасности в .NET Framework 4

Прозрачный для безопасности код, уровень 2

AllowPartiallyTrustedCallersAttribute Class

3 голосов
/ 16 мая 2010

Это было исправлено в последней версии Moq (на самом деле это было исправление в DynamicProxy). Пожалуйста, попробуйте последнюю бета-версию v4.

http://moq.me

...