2010-09-27 13 views
8

Roy Osherove, autor de el arte de la Unidad de Pruebas, tiene commented en un blog que de las muchas cosas NUnit supuestamente hace mejor, siendo mucho más rápido es uno de ellos.¿Cuánto más rápido se NUnit comparación con MSTest

Mi pregunta es ¿cuánto más rápido, si es así? ¿Estamos hablando un orden de magnitud? 10%? 50%?

Pregunto esto porque, por el momento, no puedo comparar los dos. Estoy intentando configurar mi proyecto de prueba para que esté en un dual-mode para poder cambiar entre ellos. Desafortunadamente, estoy teniendo un problema con la integración de NUnit con la última versión de Microsoft Moles, y también con NUnit is conflicting with a third party library (appears log4net related).

Hasta ahora, MSTest parece mucho más fácil de usar en Visual Studio 2008. Todos los problemas de versión y compatibilidad con NUnit (al menos para mí) me llevan a elegir MSTest como marco para el proyecto (aunque puedo mantener la opción de modo dual). Otra ventaja para MSTest es que todavía puedo utilizar la mayoría de NUnit afirma con:

using Assert = NUnit.Framework.Assert; 
using Is = NUnit.Framework.Is; 

Pero .... Si la velocidad es realmente mucho más rápido en NUnit, entonces yo prefiero usar que, a pesar de los puntos de dolor .

Por último, ¿ha habido alguna mejora de velocidad en VS2010 para MSTest?

Respuesta

6

Bueno, me tomé el tiempo para eliminar Microsoft Moles y el código de producción que se ocupa de los problemas relacionados con log4net para poder comparar los dos. Luego realicé pruebas tanto en MSTest 2008 como en NUnit 2.5.2.

Lo que descubrí es que MSTest informa mejor el tiempo de duración de cada prueba individual. Si la prueba es lo suficientemente rápida en NUnit, se registra como 0 segundos tanto en el archivo TestResults.xml como en la GUI cuando se hace clic en las propiedades de una prueba. No obstante, traté de comparar la suma de todas las velocidades de prueba y, en algunos casos, NUnit es más rápido y, en otros casos, MSTest es más rápido. Cuando uno es más rápido que el otro, es aproximadamente un 30%.

Ahora, donde NUnit definitivamente parece más rápido es el tiempo de espera antes de que se ejecuten las pruebas de la unidad. Cuando adjunto la GUI (o consola) al Depurador VS y ejecuto el proyecto de prueba, NUnit demora alrededor de 3-6 segundos en iniciarse y cargarse antes de que se puedan ejecutar las pruebas. Con MSTest toma entre 15-20 segundos. Para MSTest, no importa si solo hay 1 prueba o 26, este tiempo de carga parece ser el mismo. Con respecto a cómo estos tiempos de espera se escalan a medida que el proyecto de prueba se hace más grande, digamos en los miles de pruebas unitarias, no puedo comentar la diferencia, aunque estaría muy interesado en saberlo.

También parece haber un poco de retraso en MSTest mientras se ejecutan las pruebas, tal vez para actualizar el panel de resultados. Por lo tanto, sospecho que cuando la gente dice que NUnit es mucho más rápido que MSTest, es debido a los retrasos de carga y actualización, pero el tiempo de ejecución de la prueba parece ser muy similar.

2

He usado tanto MSTest como NUnit (la primera más que la última), y no puedo decir que haya notado grandes diferencias entre los dos con respecto a la velocidad (no me malinterpreten, la diferencia podría ser allí, simplemente no lo he notado).

El motivo por el que elijo MSTest es su integración con Visual Studio, ya que hace mucho más simple. Además, una vez tuve algunos problemas al ejecutar un par de pruebas porque las pruebas de NUnit se ejecutaron en un apartamento de subproceso diferente que MSTests.

+1

Si usar NUnit y tener integración con VS es importante, puede usar plugins de prueba de corredor (como TestDriven.NET y Resharper) para ejecutar pruebas unitarias desde VS. No es exactamente lo mismo que el corredor de prueba integrado que solo funciona con MSTest. Pero podría ser una buena solución para algunos. –

Cuestiones relacionadas