visual studio snippets snippet instalar code bootstrap autocompletar visual-studio-2008 tdd mstest

visual studio 2008 - studio - Cómo facilitar el TDD con MSTest/VS2008



visual studio code bootstrap intellisense (10)

Desarrollé TDD usando NUnit durante varios años y he estado usando MSTest durante aproximadamente 4 meses debido a un cambio de rol.

No creo que MSTest impida que alguien haga TDD. Todavía tienes todas las cosas básicas que necesitas para TDD, como las afirmaciones básicas y los marcos burlones (yo uso Rhino Mocks).

MSTest se integra estrechamente con Visual Studio, el mejor componente de esta integración es la herramienta de cobertura de código integrada.

PERO Hay una serie de razones convincentes para no usar MSTest. Los dos puntos de mayor rechazo en mi opinión son:

  1. La falta de opciones de afirmación (en comparación con NUnit)
  2. El corredor de prueba lento (lento en comparación con NUnit)

Esto significa que escribir afirma que tomar más código en combinación con un corredor de prueba lento significa que todo el proceso es más lento que NUnit. Las opciones de código abierto también tienen mucho más soporte en la comunidad.

Si está utilizando TFS para CI, deberá pasar por algunos aros / hacks para que NUnit publique los resultados de las pruebas. Ejecutar pruebas en TFS con MSTest en comparación es muy fácil y directo. Si no tocas TFS antes que ir a NUnit, es simplemente mejor.

He leído una y otra vez que el TDD / prueba primero es más difícil con MSTest que con otros frameworks de prueba como nUnit, MBUnit, etc ... ¿Cuáles son algunas soluciones manuales sugeridas y / o bits de terceros que sugieres? cuando MSTest es la única opción debido a la política de infraestructura? Principalmente me estoy preguntando sobre VS 2008 Team Suite, pero supongo que las sugerencias para VS 2008 Pro up up serían adecuadas también, ya que algunas funcionalidades de MSTest también se incluyen con esas versiones.


Hay muchos archivos de configuración con mstest, por lo que es menos recomendable.
Otra razón por la que elegí mbunit es la función "rollback" de mbunit. Esto le permite deshacer todas las cosas de la base de datos realizadas en esta prueba, por lo que puede hacer pruebas de circuito completo y no preocuparse por la contaminación del estanque después de la prueba.
También falta de instalaciones de RowTest en mstest.

Sugiero simplemente ejecutar mbunit como una dependencia dentro del proceso de compilación, es bastante fácil simplemente flotarlo con su contenedor, y hacer referencia, no requiere instalación.


MSTest ciertamente no es tan eficiente o extensible como algunos de los marcos de código abierto, pero es viable. Dado que la pregunta es acerca de cómo hacer la vida más fácil con MSTest y no sobre alternativas, estos son mis consejos MSTest.

  • Atajos . Como dijo Haacked, tómese unos segundos para aprender los atajos.
  • Contexto actual . Como MSTest es muy lento, ejecuta pruebas solo en el contexto actual cuando puedas. ( CTRL + R , CTRL + T ). Si su cursor está en un método de prueba, esto solo ejecutará el método. Si su cursor está fuera de un método, pero en una clase de prueba, esto solo ejecutará la prueba. Y con el espacio de nombres, etc, etc.
  • Pruebas y organización eficientes . Es un perro lento Haga las cosas lo mejor que pueda escribiendo pruebas eficientes. Mueva las pruebas lentas a otras clases o proyectos de prueba para que pueda ejecutar las pruebas rápidas con más frecuencia.
  • Probando con WCF . Si está probando servicios, asegúrese de DEPURAR las pruebas en lugar de ejecutar las pruebas para que Visual Studio pueda iniciar los servidores web de desarrollo de ASP.NET. Después de que se terminen, puede volver a ejecutar, pero puede ser más fácil simplemente DEPURAR para que no tenga que pensar en ello.
  • Archivos de configuración . Edite su configuración de ejecución de prueba para mover archivos .config a la carpeta de ejecución de prueba.
  • Integración con Source Safe . Debes ser consciente de que MSTest odia a SourceSafe y el sentimiento es mutuo. Debido a que MSTest desea poner los archivos de prueba bajo control de fuente y agregarlos a la solución, debe verificar la solución cada vez que ejecuta pruebas. Por lo tanto, SourceSafe debe ejecutarse en el modo de comprobación múltiple para evitar matar a sus compañeros desarrolladores.
  • Ignora la pelusa Con MSTest, obtienes una docena de ventanas y vistas diferentes. Pruebas, vista de prueba, listas de prueba ... no son útiles. Sigue con los resultados de la prueba y estarás mucho más feliz.
  • Quédese con "Pruebas unitarias" . Cuando agrega una nueva prueba, puede agregar una prueba ordenada, una prueba de unidad o ejecutar un asistente. Quédese con las pruebas unitarias sencillas.

Mi colega Mike Hadlow tiene un buen resumen de por qué detestamos a MSTest aquí .

Ha logrado eliminarlo de su proyecto, pero actualmente estoy trabajando en un proyecto más grande con más política involucrada, así que todavía lo estamos usando.

El resultado es que quien implementó MSTest no entiende TDD. Lamento sonar como un M $ basher, realmente no lo soy. Pero me molesta que tenga que aguantar una herramienta muy pobre.


No he visto ningún problema serio con MSTest. ¿De qué estás hablando específicamente? De hecho, nos estamos alejando de NUnit a MSTest. Sin embargo, no sé nuestros motivos para esto.


Para responder una pregunta no puntiaguda, mi respuesta sería "probablemente NUnit simplemente se quede fuera de tu vista".

Descargo de responsabilidad : no tengo ninguna experiencia real con la versión MS de xUnit, sin embargo, escucho problemas como ''Necesitas instalar la gigantesca idea solo para ejecutar tus pruebas en una máquina separada'', que es un completo No-No. Aparte de eso, MS tiene esta forma de contorsionar el camino correcto para un novato a través de algún tipo de campana / pitido IDE que va en contra de toda la idea. Como generar pruebas de clases fue uno que recuerdo de un año atrás ... que derrota el objetivo de la conducción de prueba : se supone que su diseño emergerá de los pequeños pasos de RGR: escribir una prueba, convertirlo en refactor de pasada. Si usas esa herramienta, te roba toda la experiencia.

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


Si no tiene más remedio que usar MSTest, aprenda los atajos de teclado. Harán tu vida un poco más fácil.

Prueba en contexto actual: CTRL + R , T
Todas las pruebas en solución: CTRL + R , A

Pruebas de depuración en contexto actual: CTRL + R , CTRL + T
Depurar todas las pruebas en la solución: CTRL + R , CTRL + A


Tengo curiosidad aquí. Lo que no entiendo es que la gente comience a comparar todas las herramientas de código abierto disponibles con MSTest y comiencen a criticarlo. Al comentar lo difícil que es, lo poco entusiasta, etc. En mi humilde opinión, es porque es fundamentalmente diferente de los marcos xUnit. Está optimizado para ejecución paralela.

Incluso el qurik de tener ClassInitialze y Cleanup estáticos y tener TestContext único para cada una de las pruebas, todo debido a la próxima generación -al menos para los programadores comerciales de Windows en lenguajes MS-, los conceptos paralelos de programación.

Tuve la desgracia de trabajar en un proyecto con decenas de miles de pruebas unitarias. ¡Solían tomar casi todo el tiempo de compilación! Con MSTest, reducimos eso a líneas de tiempo muy manejables.


como se mencionó, oyu necesita instalar el IDE completo para usar MSTest en otra máquina, lo cual es un poco estúpido. Supongo que esto se debe a que quieren asegurarse de que las pruebas unitarias solo funcionen en los estudios visuales superiores y que puedas ejecutarlos de cualquier otra forma.

Además, MSTest es bastante lento, esto se debe a que entre cada prueba reconstruye todo el contexto para cada prueba, esto hace que sea seguro que una prueba anterior - falló o no influye en la prueba actual, pero ralentiza las cosas. sin embargo, puede usar el indicador / noisolation, que ejecutará todas las pruebas dentro del proceso MSTest, que es más rápido. Para acelerar en IDE: en VS ide, puede ir a Herramientas-Opciones y luego seleccionar Herramientas de prueba. Seleccione el subartículo llamado Ejecución de prueba y en el marcado a la derecha, asegúrese de que esté marcada la casilla de verificación denominada "Mantener el motor de ejecución de prueba ejecutándose entre ejecuciones de prueba".


  • MSTest tiene "alta fricción": obtener un script de compilación con NAant y MbUnit en comparación con MStest y MSBuild. Sin comparación.
  • MSTest es Slow MbUnit y NUnit están en mi experiencia más rápido (galio puede ayudar aquí)
  • MStest agrega un montón de cosas que no necesito, como archivos de configuración por cable, etc.
  • MSTest no tiene el conjunto de fetaure de otros marcos de prueba del sistema operativo. echa un vistazo a xUnit y MbUnit

Es demasiado difícil de usar y hay muchas opciones mejores.