2011-06-14 18 views
6

Soy nuevo en TDD y estoy buscando opciones para probar mi unidad de la solución Visual Studio 2010. Esta solución es una aplicación web MVC3, que soy intentando para usar DDD con IoC, repositorio y patrones de unidad de trabajo. También utiliza EF4 & las plantillas EF4 POCO. (Intenté modelar gran parte de él desde el Microsoft N-layer App, también tomando prestados patrones de diseño de otros blogs).¿Cuáles son las opciones preferidas hoy en día para las pruebas unitarias en Visual Studio 2010?

He estado buscando y leyendo sobre esto durante un par de horas, y parece que estoy encontrando información conflictiva en todos lados. Gran parte de esto se debe a los viejos resultados que surgen y las opciones en evolución para Visual Studio 2010.

Sé que hay varias opciones, pero una vez más, me está costando discernir las opciones obsoletas de las opciones más nuevas, y hay cierta ambigüedad en las referencias que usan las personas. Incluso el popular discussion aquí tiene alguna información antigua/ambigua/conflictiva.

Por ejemplo:

  1. ¿Existe una diferencia entre MSTest, Visual Studio Unit Testing Framework y Microsoft.VisualStudio.TestTools.UnitTesting? ¿Entonces qué? Parece que estos son diferentes, pero se han hecho referencias incorrectas en algunas discusiones que he visto.

  2. Dado que el autor de NUnit también es autor de xUnit, ¿significa eso que xUnit reemplaza a NUnit, lo que hace que NUnit se desaproveche? Parece que algunos, incluso hoy, prefieren NUnit. Pero si NUnit está en desuso, ¿por qué comenzar hoy usando NUnit sobre xUnit? Si NUnit no está en desuso, ¿significa esto que xUnit no está despegando como se pretendía originalmente? ¿Por qué el autor continuaría apoyando dos herramientas aparentemente redundantes?

  3. ¿Cuál de estos se integra en VS2010 sin tener que recurrir a la ejecución por separado de líneas de comando para probar o tener que comprar herramientas como TestDriven.Net? (Tengo ReSharper, si esto es compatible con cualquiera de estos).

  4. ¿Han habido cambios notables recientemente en alguno de estos que harían que las discusiones anteriores de estos no sean válidas?

  5. ¿Hay algún otro que deba considerar más o en adición a los que mencioné anteriormente?

No estoy buscando necesariamente una comparación en profundidad (aunque eres más que bienvenido para proporcionar uno si desea), pero más de un consenso hasta a la fecha de la corriente herramientas que se utilizan hoy para el nuevo desarrollo VS2010.

En la superficie, el "Marco de prueba de unidad de Visual Studio" parece integrarse muy bien en VS2010 (Pro), y parece ser fácil de poner en marcha rápidamente, en lugar de algunos otros, incluso si está un poco hinchado Pero como soy nuevo, no quiero entrar en él 3 meses después, luego me doy cuenta de que me he arrinconado solo porque me pareció más fácil de aprender.

También sé que esta pregunta puede ser considerada como "mala" por algunos, debido a su naturaleza abierta y amplia, pero si bien estas son preguntas diferentes, creo que todas están relacionadas, y todas provienen de mi general confusión sobre los puntos ambiguos y contradictorios que estoy encontrando sobre pruebas unitarias en VS2010.

Gracias de antemano.

EDITAR: Esto está destinado a ser una discusión más actualizada de los casi tres años de edad popular discussion que he vinculado anteriormente. Esa discusión tiene algunos puntos buenos, pero muchas cosas (podrían) haber cambiado en tres años, y me gusta una evaluación más actual del tema.

Respuesta

7
  1. Todo lo mismo .. simplemente confusopoly (MSTest es el corredor, el marco es la DLL). Me referiré a él como MSTest a partir de ahora.
  2. No tiene mucho kilometraje con xUnit. Estoy acostado firmemente en el campamento de NUnit. No estoy seguro de la historia ... pero AFAIR Jim Newkirk incluso fue contratado por Microsoft para el desarrollo MSTest. Definitivamente puedo responder que NUnit no está en desuso (o incluso ralentizado). Acabo de solucionar un error a los pocos días de informarlo. Charlie Poole ha estado dirigiendo por un tiempo (y haciendo un trabajo estelar). NUnit es el más antiguo (y está basado en la familia xUnit de corredores de prueba que comenzó con Beck's SUnit y JUnit). Crecí con eso (por así decirlo). Simplemente se queda fuera del camino y tiene casi todas las características que necesita para el desarrollo diario. MSTest ofrece integración con VisualStudio pero enturbia las aguas con pequeñas desviaciones sutiles que me trastornan (la paralelización, la configuración del dispositivo debe ser estática, etc.etc). Los otros intentan extender el corredor de prueba de diferentes maneras (cambio en la terminología, por ejemplo, teorías sobre los elementos de prueba) y las formas en que escribe sus pruebas. Nunca he tenido que extender mi prueba-corredor; tal vez no he trabajado en esos entornos que lo necesitan.
  3. NUnit no se integra en la estantería como MSTest. Pero si tienes Resharper (que deberías), tapa este espacio. Además, MSTest AFAIK requiere una copia del IDE completo (de una edición en particular) a diferencia de NUnit, que se puede copiar en una carpeta y ejecutar. Te lleva a TFS con "cobertura de código gratuita si usas MSTest". Si su organización utiliza TFS para CI, encontrará integración de cualquier cosa que no sea MSTest como "código más personalizado que necesito escribir".

4 y 5 cosas siguen cambiando, por lo que es difícil formar una respuesta final.

Resumen: NUnit es más fácil de aprender (le tomará un día o menos) y la mayoría de la literatura w.r.t. TDD bajará más fácilmente si lo sabes. Personalmente, nunca tuve una razón para moverme (por ejemplo, NUnit no hace esto que xUnit hace y no puedo vivir sin esto). A menos que seas grande en MS-CI (y cobertura y TestImpact "gratuitos"), diría que comiences con NUnit y sigas subiendo. No hay corredores de pruebas de plata.
La herramienta no garantiza el éxito, es la forma de usar esas herramientas. Elija uno, comience y adaptarse.

HTH

+0

Gracias, Gishu. Me pregunto si los fanáticos de NUnit son los que han "crecido" con él como tú. Por ejemplo, si alguien empezara a aprender hoy, desde el principio, ¿sería mejor comenzar con xUnit? Quizás NUnit aún no esté en desuso *, pero tal vez el objetivo final sea que xUnit reemplace a NUnit. Esas son las preguntas con las que estoy luchando. Además, para el # 1, dices que son lo mismo. Pero si revisas esos enlaces que publiqué (es cierto, son de Wikipedia), afirman que * no * son lo mismo. De ahí los hechos contradictorios que estoy leyendo. –

+0

@Jerad Rose: parece que el exe TestRunner se llama MSTest y debe consultar el ensamblado "VS Unit Testing Framework" para escribir las DLL que el corredor consumirá. No estoy seguro de por qué el corredor y el marco necesitan nombres diferentes ... xUnit lanzado alrededor de 2007-8. 3 años es mucho tiempo para ponerse al día. Además, el "Por qué construimos xUnit.Net" todavía no es lo suficientemente convincente (para mí). RoyOsherove tiene una publicación más detallada http://osherove.com/blog/2007/9/21/xunitnet-aims-to-be-the-next-nunit-but-its-too-soon.html aunque es un poco anticuado. Ver también http://stackoverflow.com/questions/261139. – Gishu

+0

También podría probarlos a ambos por un tiempo no trivial para que se hunda. Luego tome una decisión – Gishu

0

Puedo responder # 3: TestDriven se integra muy bien con VS2010. Obtiene una opción del menú contextual para ejecutar pruebas, e incluso puede enganchar algunos de los comandos a teclas de método abreviado, para que pueda ejecutar todas sus pruebas rápidamente.

+0

Pero estaba preguntando si alguno de los marcos de pruebas unitarias integrado con VS2010 _sin tener que comprar Testdriven.NET o productos similares. –

+0

Tienes razón. Estoy usando TestDriven.NET (edición personal), que es gratuito. No estoy seguro de cuáles son las limitaciones para esta versión. Solo MSTest está integrado en VS. –

+0

Gracias, pero no calificaría para Personal. Tendría que comprar Profesional. –

1

Esta no es una decisión que altera la vida. Uso MSTest en algunos proyectos, NUnit en otros. Nunca he probado xUnit, pero estoy seguro de que está bien también.

Para mí, prefiero MSTest simplemente b/c de las plantillas integradas y combinaciones de teclas que hacen que las pruebas sean rápidas de ejecutar y configurar. Dicho esto, si alguien en el equipo de desarrollo no puede usar VS, no es una alegría.

Al usar NUnit, no quería pagar por Resharper (lo siento, lo he visto en acción, pero simplemente no he visto la luz, supongo). Yo uso Visual NUnit en su lugar. http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099 Es gratis, se integra con la interfaz de usuario de Visual Studio (aunque no es una interfaz de usuario hermosa, pero es mejor que TestDriven.NET).

+0

Asunto: "Esta no es una decisión que modifique la vida". Esa es una de las principales razones para comenzar esto: para averiguar si este es el caso. Veo, sin embargo, dónde algunos han bajado por un camino, luego para regresar y dirigirse a otro. Me gustaría evitar eso, si es posible, ya que este proyecto es muy extenso y será bastante doloroso si encuentro que necesito hacerlo. –

+0

@Jerad> entonces la pregunta principal es con qué otros desarrolladores tienen experiencia y acceso. No hay diferencia objetiva (imo) entre ellos aparte de eso. – Paul

1

ReSharper puede ejecutar pruebas escritas en xUnit, NUnit y MSTest.

xUnit necesita una (libre) para enchufar ReSharper que está vinculado a la página xUnitContrib: http://xunitcontrib.codeplex.com/

NUnit y MSTest tanto el trabajo fuera de la caja.

En ReSharper se puede ver lo que prueba unitaria marcos se instalan en ReSharper -> Opciones -> Unidad de Pruebas (en la parte inferior debajo de las herramientas en el panel de la izquierda)

+0

Excelente información, aunque probablemente debería publicarse como comentario en la respuesta anterior, no es información suficiente para competir como respuesta contra @Gishu. – condiosluzverde

+0

@arrocharGeek Quería el formato, ya que hay 3 partes para esta respuesta, y también siento que no estaba comentando su respuesta. – Rangoric

Cuestiones relacionadas