2012-01-04 6 views
5

Después de leer cosas buenas acerca de Moles, me gustaría agregar un marco de aislamiento a nuestro conjunto de herramientas para escribir pruebas unitarias.Marco de aislamiento para la prueba de Mono

Nuestra aplicación se ejecuta en Mono, ya que se implementa en Linux y Windows y parece que no puedo encontrar un marco que admita Mono.

He visto algunos artículos sobre cómo manipular ensamblajes usando Cecil, pero estoy luchando por encontrar algo que podamos usar de forma realista.

Respuesta

4

Parece que Moles funciona usando el JIT, por lo que espero que esté muy ligado a la implementación de microsoft.

He tenido una gran cantidad de éxito usando Moq en mono, con un esfuerzo muy pequeño es posible crear una instancia proxy de casi cualquier clase e interceptar casi todas las llamadas a métodos. El latest binary version de Moq funciona muy bien en mono para mí.

using Moq; 

var mock = new Mock<MyClass> { CallBase = true }; 
mock.Setup(x => x.MyMethod()).Returns (1); 

Después de usar Moq para configurar cosas, generalmente prefiero usar NUnit pero puede usar cualquier otro marco de prueba.

+0

Gracias por su contribución, Ian. Sí, ni siquiera he tratado de ejecutar Moles con Mono ya que supongo que va a fallar. Ya estamos usando Moq, lo que creo que es fantástico, pero estoy buscando herramientas que me permitan hacer frente a los problemas de tipo DateTime.Now. Soy plenamente consciente de que puedo ajustar los métodos estáticos detrás de los métodos de instancia en las clases proxy, pero no estoy seguro de que sea la solución más elegante en todos los escenarios. – sebjsmith

+0

Ohh, intercepción de métodos estáticos .. eso es complicado – IanNorton

+0

¿Ha mirado usando PostSharp para agregar ganchos pre/post a sus métodos? – IanNorton

0

TypeMock es probablemente su única opción al agregar sus comentarios a la respuesta de @IanNorton.

+1

No creo que TypeMock admita Mono. – sebjsmith

+0

Si TypeMock no funciona en Mono, es probable que no tenga absolutamente ninguna otra opción que las clases de proxy. –

Cuestiones relacionadas