2010-04-22 13 views
14

Recibo la siguiente excepción al intentar ejecutar mis pruebas unitarias usando .net 4.0 bajo VS2010 con moq 3.1.Excepción extraña de .net 4.0 al ejecutar pruebas unitarias

intento de seguridad método transparente 'SPPD.Backend.DataAccess.Test.Specs_for_Core.When_using_base.Can_create_mapper()' acceder a la seguridad método crítico 'Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull (Sistema .Object) ' falló.

Asamblea 'SPPD.Backend.DataAccess.Test, versión = 1.0.0.0, Culture = neutral, PublicKeyToken = null' está marcado con el AllowPartiallyTrustedCallersAttribute, y utiliza el modelo de seguridad transparencia nivel 2. Nivel 2 transparencia hace que todos los métodos en AllowPartiallyTrustedCallers ensambles se conviertan en seguridad transparente de forma predeterminada, que puede ser la causa de esta excepción.

La prueba Me postulo es muy sencillo y se ve algo como lo siguiente:

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

no tengo idea de lo que esto significa y lo he estado buscando y he encontrado muy poco sobre el tema . La referencia más cercana que he encontrado es esta http://dotnetzip.codeplex.com/Thread/View.aspx?ThreadId=80274 pero no está muy claro en qué lo arreglaron ...

¿Alguien tiene alguna idea?

Respuesta

4

MSDN: ".NET Framework versión 4 introduce nuevas reglas de seguridad que afectan el comportamiento del atributo AllowPartiallyTrustedCallersAttribute (vea el Código transparente de seguridad, Nivel 2) .En .NET Framework 4, todos los códigos predeterminados para seguridad- transparente, es decir, parcialmente confiable. Sin embargo, puede anotar tipos individuales y miembros para asignarles otros atributos de transparencia ".

No me he encontrado con esto, pero tal vez haya importado algo de un proyecto de 3.5.

visita estos links:

Security Changes in the .NET Framework 4

Security-Transparent Code, Level 2

AllowPartiallyTrustedCallersAttribute Class

+0

no creo que me importan nada de un proyecto ya existente, como he creado esta solución/proyecto desde cero en vs2010 ... La excepción lanzada está en la variable de resultado que es un objeto Moq creado dinámicamente ...Traté de usar las últimas compilaciones de Moq para ver si soluciona los problemas, pero no fue así y, hasta donde yo sé, siguen construyéndose en 3.5 ... –

3

Esto se ha corregido en la versión más reciente de Moq (que era una solución en DynamicProxy en realidad). Por favor, pruebe la última versión de v4 Beta.

http://moq.me

19

En los AssemblyInfo.cs del proyecto de referencia agregar la siguiente línea de

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

Esto me ayudó. –

Cuestiones relacionadas