14 Stimmen

Seltsame .net 4.0-Ausnahme bei der Ausführung von Unit-Tests

Ich erhalte die folgende Ausnahme, wenn ich versuche, meine Unit-Tests mit .net 4.0 unter VS2010 mit moq 3.1 auszuführen.

Versuch mit transparenter Sicherheitsmethode 'SPPD.Backend.DataAccess.Test.Specs_for_Core.When_using_base.Can_create_mapper()' um auf die sicherheitskritische Methode Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull(System.Object)' fehlgeschlagen.

Montage SPPD.Backend.DataAccess.Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ist markiert mit der AllowPartiallyTrustedCallersAttribute, und verwendet das Sicherheitsmodell der Stufe 2 Transparenzmodell. Stufe 2 Transparenz bewirkt, dass alle Methoden in AllowPartiallyTrustedCallers Assemblies sicherheitsrelevant werden transparent, was die Ursache für diese die Ursache für diese Ausnahme sein kann.

Der Test, den ich durchführe, ist wirklich einfach und sieht in etwa wie folgt aus:

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

Ich habe keine Ahnung, was das bedeutet, und ich habe mich umgesehen und sehr wenig zu diesem Thema gefunden. Der beste Hinweis, den ich gefunden habe, ist dieser http://dotnetzip.codeplex.com/Thread/View.aspx?ThreadId=80274 aber es ist nicht ganz klar, was sie getan haben, um das Problem zu lösen...

Hat jemand eine Idee?

19voto

coderman Punkte 1455

Fügen Sie in der AssemblyInfo.cs des referenzierten Projekts die folgende Zeile hinzu

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

4voto

UpTheCreek Punkte 29856

MSDN: "Das .NET Framework Version 4 führt neue Sicherheitsregeln ein, die sich auf das Verhalten des Attributs AllowPartiallyTrustedCallersAttribute auswirken (siehe Sicherheitstransparenter Code, Stufe 2). Im .NET Framework 4 ist der gesamte Code standardmäßig sicherheitstransparent, d. h. teilweise vertrauenswürdig. Sie können jedoch einzelne Typen und Member annotieren, um ihnen andere Transparenzattribute zuzuweisen."

Ich bin selbst noch nicht darauf gestoßen, aber vielleicht haben Sie etwas aus einem 3.5-Projekt importiert.

Sehen Sie sich diese Links an:

Sicherheitsänderungen im .NET Framework 4

Sicherheits-Transparenter Code, Stufe 2

AllowPartiallyTrustedCallersAttribute-Klasse

0 Stimmen

Ich glaube nicht, dass ich etwas aus einem bestehenden Projekt importiert habe, da ich diese Lösung/dieses Projekt von Grund auf in vs2010 erstellt habe... Die Ausnahme, die ausgelöst wird, bezieht sich auf die Ergebnisvariable, die ein dynamisch erstelltes Moq-Objekt ist... Ich habe versucht, die neuesten Moq-Builds zu verwenden, um zu sehen, ob die Probleme dadurch behoben werden, aber das ist nicht der Fall, und soweit ich weiß, wird immer noch unter 3.5 gebaut...

3voto

kzu Punkte 1689

Dies wurde in der neuesten Version von Moq behoben (eigentlich war es eine Korrektur in DynamicProxy). Bitte probieren Sie die neueste v4 Beta aus.

http://moq.me

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X