Pregunta

He leído una y otra vez que TDD/prueba primero es más difícil con MSTest que es con otros marcos de las pruebas, tales como nUnit, MBUnit, etc...¿Cuáles son algunas sugerencias de soluciones manuales y/o la 3ª parte de bits que se sugieren cuando MSTest es la única opción debido a la política de infraestructura?Estoy principalmente preguntando acerca de VS 2008 Team Suite, pero supongo consejos para VS 2008 en Pro sería adecuado, ya que algunos MSTest funcionalidad se incluye ahora con esas versiones.

¿Fue útil?

Solución

MSTest ciertamente no es tan eficiente o extensible como algunos de los frameworks de código abierto, pero es viable.Desde la pregunta acerca de hacer la vida más fácil con MSTest y no se trata de alternativas, aquí están mis MSTest consejos.

  • Accesos directos.Como Haacked dijo, tome unos segundos para aprender los atajos de teclado.
  • En El Contexto Actual.Desde MSTest es tan lento, ejecutar las pruebas sólo en el contexto actual, cuando se puede.(CTRL+R, CTRL+T).Si el cursor está en un método de prueba, esto sólo va a ejecutar el método.Si el cursor está fuera de un método, pero en una clase de prueba, esto sólo va a ejecutar la prueba.Y con el espacio de nombres, etc, etc
  • Eficiente de las pruebas y de la organización.El perro lento.Hacer las cosas lo mejor que pueda por la escritura eficaz de las pruebas.Mover lento pruebas para otras clases de prueba o proyectos con el fin de ejecutar el fast pruebas con más frecuencia.
  • Prueba con WCF.Si eres de los servicios de pruebas, asegúrese de DEPURACIÓN de las pruebas en lugar de EJECUTAR las pruebas de Visual Studio, el fuego de la ASP.NET desarrollo de servidores web.Después de estos son, entonces usted puede volver a EJECUTAR, pero puede ser más fácil siempre de DEPURACIÓN para que usted no tenga que pensar en ello.
  • Los Archivos De Configuración.Edición de su prueba de gestión de configuración para mover .los archivos de configuración en la ejecución de las pruebas de la carpeta.
  • Integración con caja Fuerte.Usted necesita estar consciente de que MSTest odia SourceSafe y el sentimiento es mutuo.Porque MSTest quiere poner a prueba los archivos bajo control de código fuente, y agregar a la solución, se debe retirar la solución cada vez que ejecute las pruebas.Así SourceSafe debe estar en ejecución en multi-salida de modo de evitar la matanza de sus compañeros desarrolladores.
  • Ignorar la pelusa Con MSTest, se obtiene una docena de diferentes ventanas y puntos de vista.Corridas De Prueba, Prueba De La Vista, Examen De Las Listas De ...son todos menos útil.Stick con los Resultados de la Prueba y usted será mucho más feliz.
  • Stick con "Pruebas de Unidad".Cuando se agrega una nueva prueba, usted puede agregar una prueba por orden, una unidad de prueba, o bien a través de un asistente.Stick con la simple simple unidad de pruebas.

Otros consejos

Si usted no tiene ninguna opción pero para uso MSTest, aprender los atajos de teclado.Que van a hacer su vida un poco más fácil.

La prueba en el Contexto Actual: CTRL+R, T
Todas las Pruebas de la Solución: CTRL+R, Un

Depuración de las Pruebas en el Contexto Actual: CTRL+R, CTRL+T
Depuración de Todas las Pruebas de la Solución: CTRL+R, CTRL+Un

Tengo curiosidad por aquí.Lo que no entiendo es que la gente empiece a comparar todas las herramientas de código Abierto disponible con MSTest y comenzar a golpear a ella.Comentando acerca de lo difícil de manejar es, cómo unintiuitve etc.En mi humilde opinión, es porque es fundamentalmente diferente de xUnit marcos.Es optimizado para la ejecución en paralelo.

Incluso el qurik de tener estático ClassInitialze y Limpieza y con único TestContext para cada una de las pruebas de todos debido a la nextgen - al menos para Windows negocio programadores en MS idiomas - paralelo progarmming conceptos.

Tuve la desgracia de trabajar en un proyecto con decenas de miles de pruebas de unidad.Se utiliza para prácticamente la mayoría de el tiempo de construcción!Con MSTest, podemos cortar hacia abajo a muy manejable plazos.

Mi colega Mike Hadlow tiene muy buen resumen de por qué estamos absolutamente dispuestos MSTest aquí.

Se las ha arreglado para sacarlo de su proyecto, pero en la actualidad estoy trabajando en un proyecto más grande, con más política implicados, así que todavía estamos utilizando.

El resultado de ello es que quien implementado MSTest no entiende TDD.Siento que suene como una M$ basher - realmente no estoy.Pero estoy molesto de que me voy a poner con un muy pobre de la herramienta.

No he visto problemas serios con MSTest.Lo que, en concreto, están hablando?Estamos, de hecho, alejándose de NUnit para MSTest.No sé las razones por las que esto, sin embargo.

Hay un montón de archivos de configuración con mstest, por lo que es menos condusive.
Otra razón por la que elegí mbunit, es la "reversión" de la característica de mbunit.Esto permite la reversión de base de datos que las cosas se hagan en esta prueba, por lo que usted puede hacer realmente completo circuito de pruebas y no se preocupe de la laguna está contaminada después de la prueba.
También la falta de RowTest instalaciones en mstest.

Yo sugiero que simplemente ejecutando mbunit, como una dependencia dentro del proceso de construcción, su fácil lo suficiente como para flotar con su bin, y de referencia, no requiere de instalación.

  • MSTest tiene "alta fricción":Llegar un script de generación con NAant y MbUnit en comparación con MStest y de MSBuild.No De la comparación.
  • MSTest es Lento MbUnit y NUnit están en mi experiencia más rápido (gallio pueden ser de ayuda aquí)
  • MStest añade un montón de cosas que no necesita, como la cable archivos de configuración, etc.
  • MSTest no tiene los fetaure conjunto de otros OS los marcos de prueba.echa un vistazo xUnit y MbUnit

Es demasiado difícil y hay muchas mejores opciones.

como se mencionó oyu necesidad de instalar todo el IDE con el fin de utilizar MSTest en otra máquina, que es un poco mierda.Supongo que esto es porque quieren asegurarse de que las pruebas de unidad sólo funciona en el extremo superior de visual studios y sholdné ser capaz de ejecutar en cualquier otra forma.

También, MSTest es bastante lento, esto es debido a que entre cada prueba se reconstruye el contexto completo para cada prueba, esto hace que o0ne seguro de que un ex-prueba - error o de lo contrario doen't infuencia de la prueba actual, pero ralentiza las cosas.sin embargo, puede utilizar el /noisolation bandera, que va a ejecutar todas las pruebas dentro de la MSTest proceso - que es más rápido.Para acelerar en el IDE:En el ide de VS se puede ir a Herramientas-Opciones, a continuación, seleccione Herramientas de Prueba.Seleccione el sub-elemento de llamada y ejecución de Pruebas en dialouge a la derecha asegúrese de que la casilla de verificación denominada "Mantener la ejecución de las pruebas de funcionamiento del motor entre las ejecuciones de prueba" está activada.

Para responder a un no-señaló la pregunta, mi respuesta sería "probablemente NUnit que se queda fuera de su cara."

Descargo de responsabilidad:No tengo experiencia real con MS versión de xUnit, sin embargo he de escuchar los problemas como "Usted necesita para instalar el gigantesco idea para ejecutar las pruebas en una máquina separada' - que es un completo No-No.Aparte de que MS tiene esta manera de contorsionado el camino correcto para un novato a través de algún tipo de IDE bell/silbato que va en contra de la idea.Como la generación de pruebas de las clases era un recuerdo de un año o así que de vuelta..que vence el punto de la prueba de conducción - su diseño se supone que emergen a partir de pequeños pasos de RGR:escribir un artículo de prueba-hágalo pasar-refactorizar.Si se usa la herramienta que le priva de toda la experiencia.

Voy a dejar con mi sermón..ahora :)

He hecho TDD desarrollo el uso de NUnit para un número de años, y han estado usando MSTest por cerca de 4 meses debido a un cambio de función.

No creo que MSTest deja de alguien haciendo TDD.Usted todavía tiene todas las cosas principales que usted necesita para TDD básicos como afirma y se burla de los marcos (yo uso Rhino Mocks).

MSTest integra estrechamente con Visual Studio, el mejor componente de esta integración es la Herramienta de Cobertura de Código que se construye en.

PERO Hay un número de razones de peso no el uso de MSTest.Los dos más grandes desvíos en mi opinión son:

  1. La falta de afirmar opciones (en comparación con NUnit)
  2. La lenta test runner (lento en comparación con NUnit)

Esto significa que la escritura afirma que lleva más de código en combinación con un lento test runner significa que todo el proceso es más lento que el de NUnit.El open source opciones también tienen mucho más apoyo en la comunidad.

Si usted está utilizando TFS para CI, entonces usted tendrá que saltar a través de unos aros/hacks para conseguir NUnit para publicar los resultados de la prueba.Ejecución de pruebas en TFS con MSTest en comparación es muy fácil y sencillo.Si usted no toque TFS que me gustaría ir NUnit todo el camino, sólo que mejor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top