¿Cuál es el mejor marco de prueba de unidad para .NET y por qué? [cerrado]

26

Me parece que todos usan NUnit sin siquiera considerar las otras opciones. Creo que esto es porque:

  • Todos ya lo conocen, por lo que no tendrán que aprender una nueva API.
  • Ya está configurado con su servidor de integración continua para trabajar con NUnit.

¿Estoy equivocado sobre esto?

¡Decidí usar xUnit en uno de mis propios proyectos recientemente y me encanta! Tiene mucho más sentido para mí y conceptualmente parece un paso definitivo hacia adelante desde NUnit.

Me gustaría escuchar opiniones sobre qué marco es realmente el mejor, sin tener en cuenta tener que aprenderlo o reconfigurar sus pruebas automatizadas.

Nadie
fuente
66
Por favor defina mejor. Más barato? más fácil de codificar? menos líneas de código por prueba? stackoverflow.com/questions/680298/…
Amir Rezaei
Lo siento, quise decir lo más poderoso, estable e intuitivo, lo que sea. Estoy pidiendo opiniones y razones por las cuales . Dejé 'lo mejor' a la imaginación del respondedor porque también me gustaría ver cuáles de esos aspectos son importantes para las personas.
Nadie
2
Si puede reformular su pregunta, entonces podría estar bien, de lo contrario, esta es solo una pregunta de "lista de X" que no es constructiva. Vea seis pautas para preguntas subjetivas constructivas
ChrisF
2
"mejor" es una pregunta tonta, porque rara vez hay un solo mejor, en parte porque dependerá del contexto y en parte porque es inevitable en algún grado subjetivo.
Murph
10
Murph Primero, este sitio es para preguntas subjetivas. En segundo lugar, estoy pidiendo opiniones, así que me gustaría ver la interpretación de los demás de "lo mejor". Y no me llames tonto.
Nadie

Respuestas:

15

MSTest

Yo personalmente uso MSTest. NUnit es realmente agradable, pero en VS2010, MSTest ya está completamente integrado en el IDE y hay plantillas de proyecto completas para ello. Para .NET, si está utilizando 2010, entonces creo que MSTest es el camino a seguir (MSTest en VS2008 no creo que esté a la altura) simplemente para la cobertura del código, el corredor de prueba y otras herramientas que están disponibles para usted fuera de la caja. (Si usa CodeRush o R #, entonces tienen corredores / herramientas de prueba realmente excelentes para otros marcos de prueba)

Editar: desde entonces me mudé a XUnit. :RE

Ryan Hayes
fuente
He votado por MbUnit / Galio y esta respuesta. MbUnit / Galio es simplemente mejor, pero sus manos están atadas cuando se trata de ejecutar pruebas de MsTest, ya que algunas clases críticas en esa biblioteca .Net son finales y no son extensibles. Sin embargo, si tiene que hacer la automatización de la GUI, la IU codificada y cuite.codeplex.com/documentation funcionan sobre MsTest, por lo que uno DEBE usarlos.
Trabajo
2
El problema que tengo con MSTest es que no admite de forma nativa la prueba de línea de comandos, esto puede ser un problema cuando desea ejecutar unidades a través de CI.
CmdrTallen
1
Nunit ahora es totalmente integrable en VS ¿verdad?
BKSpurgeon
Sí, eso es. Teniendo en cuenta que ahora tiene aproximadamente 6 años, personalmente me mudé a NUnit y luego a XUnit. Ambos (y otros) tienen paquetes nuget que sirven como adaptadores para iluminar la misma funcionalidad VS que MSTest. Honestamente, MSTest probablemente esté al final de la lista en este punto. Yo votaría XUnit o NUnit. en estos días ya que ambos son sólidos, mantenidos y modernos.
Ryan Hayes
14

Empecé a usar Gallio / MbUnit hace varios años. Y las características y gemas que proporciona son tan poderosas que nunca me arrepiento de mi elección. De hecho, ahora soy parte del equipo de desarrollo del proyecto Gallio OSS; para que pueda contribuir a hacerlo aún más increíble.

  • MbUnit tiene muchas características poderosas que simplemente hacen que la vida de mi desarrollador sea más fácil (verificadores de contratos, fábricas de pruebas, comparador de igualdad estructural, pruebas combinatorias, marco de generación de datos, diferenciación de texto, aserciones xml, puntos de extensión, etc.)
  • Gallio proporciona una plataforma consistente para ejecutar todas mis pruebas con una buena herramienta de informes. También me gusta el hecho de que puedo integrar pruebas de otros proyectos de OSS que no usan MbUnit y simplemente ejecutarlas. La integración perfecta en muchas herramientas de terceros también es conveniente (R #, PoSh, dotCover, etc.) y la extensibilidad de la infraestructura es sorprendente (por ejemplo, acabo de terminar de escribir un adaptador de prueba para un marco de prueba C ++ nativo no administrado Será parte de un lanzamiento futuro pronto)

La wiki es sin duda un buen punto de partida para descubrir Gallio y MbUnit v3. Todavía falta algunos capítulos, pero ya es muy útil.

Yann Trevin
fuente
El comparador de igualdad estructural y el marco de generación de datos suenan muy bien. ¿Puede MbUnit realizar pruebas basadas en datos, es decir, leer archivos csv / xsd y usarlos como argumentos de métodos de prueba? Esa es una de las principales atracciones de xunit para mí.
Nadie
Seguro. ASAIK MbUnit fue el primer marco de prueba para .NET en introducir pruebas basadas en datos. Puede vincular los parámetros de prueba a fuentes de datos internas ([Fila], [Columna], etc.) y externas ([CsvData], [XmlData], etc.). Más detalles aquí: gallio.org/wiki/doku.php?id=mbunit:data-driven_testing
Yann Trevin
¿Han solucionado los problemas de rendimiento que tenían con Gallio y Visual Studio? Fue el trato asesino para nosotros.
Wyatt Barnett
Usé MbUnit cuando trabajaba para una pequeña empresa y ¡fue genial! Más tarde usé MsTest porque tenía que hacerlo, y funcionó bien. Todavía prefiero escribir código explícito sobre la configuración del proyecto. Sin embargo, el respaldo corporativo sí ayuda a MSTest. Ya sea que el diseño sea feo o hermoso, usted sabe que todo lo que salga de MSFT será bien probado.
Trabajo
@YannTrevin ¿Cuál es el estado de Gallio / MbUnit? Miré el repositorio de Google Code y no parece haber cambios recientes. ¿El desarrollo está ocurriendo en otro lugar o el proyecto está estancado?
Wesley Wiser
9

Elegir uno y usarlo es quizás el paso más importante aquí.

Personalmente, elegiría NUnit por algunas razones. Primero y principal es el soporte de herramientas. Hay un complemento gratuito para Visual Studio 2010 , y todos los complementos de terceros más importantes lo admiten. Todos los sistemas de compilación, la utilidad de cobertura de prueba y el servidor CI lo admiten. En muchos casos sin un complemento. En el nivel de código, puede manejar casi cualquier escenario en este punto: pruebas basadas en datos, herencia, clases de prueba abstractas, clases de prueba genéricas, configuración, desmontaje, etc. Hasta cierto punto tenemos xUnit porque NUnit tiene demasiadas funciones. y poderoso

Más allá de NUnit, creo que podrías hacer un argumento bastante decente para MBUnit + Gallio como lo menciona Yann: es un marco muy sólido. El que debe evitar si es posible sería MSTest, que tiene algunos defectos fatales en mi humilde opinión. Las fallas son algunas de las restricciones en las clases de prueba, como la ausencia de herencia y las dependencias de SKU profesionales o mejores de estudio visual. Incluyendo la necesidad de instalar Visual Studio en el servidor de compilación para ejecutar las pruebas.

Wyatt Barnett
fuente
0

La única razón es que NUNIT se ha convertido en un estándar de la industria más que xUnit. Pero personalmente, amo xunit.

Cheung
fuente