Golpeando mi cabeza contra la pared tratando de hacer funcionar un escenario de prueba realmente simple. ¡Estoy seguro de que me estoy perdiendo algo realmente simple!Tiene problemas para comenzar con Moq y Nunit
lo que haga, me parece que el siguiente error de la interfaz gráfica de usuario NUnit cuando se ejecuta una prueba en contra de mi DLL: System.TypeLoadException: Tipo 'Castle.Proxies.ITestProxy' del ensamblado 'DynamicProxyGenAssembly2, versión = 0,0. 0.0, Culture = neutral, PublicKeyToken = null 'está intentando implementar una interfaz inaccesible.
Ahora he visto referencias a este error en un montón de lugares cuando busco en Stack Overflow y en otros lugares, pero la solución que sigo encontrando no parece ayudar. ¡Y ni siquiera estoy usando una interfaz interna en esta etapa! La solución que veo todo el lugar es demasiado poner la siguiente línea en AssemblyInfo.cs
[assembly: InternalsVisibleTo ("DynamicProxyGenAssembly2")]
que estoy usando:
- Visual Studio 2010 Professional
- C# 4.0
- Moq 4.10810.8 Beta (bin desplegado)
- NUnit 2.5.5 (instalado en el GAC)
para recrear este error, todo lo que tiene que hacer es:
- Crear un nuevo proyecto de biblioteca de clases
- Referencia Moq y Unidad (como el anterior)
- Crear una interfaz. He llamado a mi interfaz ITest, la hice pública, y tiene un método que es 'string TestMethod();'. Estoy haciendo esto en el proyecto local por simplicidad.
- Crear una clase llamada 'Prueba', decorado con [TextFixture] y un método de prueba que se llama 'TestMethod' decorado con [Test]
- construir el proyecto, a continuación, ejecutar NUnit contra la DLL que resulta en la carpeta de depuración.
Aquí es el contenido de mi clase de prueba
namespace MoqTest {
[TestFixture]
public class Testing {
[Test]
public void TestMethod() {
var testMock = new Mock<ITest>();
testMock.Setup(x => x.TestMethod()).Returns("String val");
var xyz = testMock.Object;
Assert.AreEqual(1, 1);
}
}
}
---- ACTUALIZACIÓN --- Después de cambiar la versión de Moq 4.10810.8 a 4.0.10501.6 todo funciona ¡multa!
Gracias por su esfuerzo, pero incluso su ejemplo falla para mí con el mismo error. (¡En un nuevo proyecto/solución con solo esta clase!) O me falta algo obvio o quizás tenga que ver con la versión de Moq/NUnit/.NET Framework. ¿Puede confirmar qué versiones estaba usando para su prueba? – Brendan
Además de esto, el mismo código dirigido a 3.5 con Moq 3.1.416 pasa la prueba bien ... Así que estoy ansioso por saber si tu ejemplo funciona con .NET Framework 4.0 – Brendan
Bien, así que después de jugar más, he encontrado que la versión de Moq está marcando la diferencia. Hasta ahora, estaba usando 4.0.10810.8 y siempre estaba fallando con este error. ¡Tan pronto como elimine la referencia a esta versión y luego la referencia 4.0.10501.6 todo se vuelve verde! Así que gracias a ladenedge por su respuesta, lo marcaré como la respuesta porque usted es el único que ha intentado ayudarme hasta ahora. – Brendan