Existen bastantes marcos de pruebas unitarias para .NET. Encontré esta pequeña comparación de características: http://xunit.github.io/docs/comparisons.html
Ahora debo elegir el mejor para nosotros. ¿Pero cómo? ¿Importa? ¿Cuál es la prueba más futura y tiene un impulso decente detrás? ¿Debería preocuparme por las características? Si bien xUnit parece ser el más moderno y específicamente diseñado para .NET, NUnit nuevamente parece ser el que está ampliamente aceptado. MSTest nuevamente está integrado en Visual Studio ...
Respuestas:
Sé que este es un hilo viejo, pero pensé en publicar un voto por xUnit.NET . Si bien la mayoría de los otros marcos de prueba mencionados son prácticamente iguales, xUnit.NET ha adoptado un enfoque bastante único, moderno y flexible para las pruebas unitarias. Cambia la terminología, por lo que ya no define TestFixtures and Tests ... especifica Facts and Theories acerca de su código, que se integra mejor con el concepto de qué es una prueba desde una perspectiva TDD / BDD.
xUnit.NET también es EXTREMADAMENTE extensible. Sus clases de atributo FactAttribute y TraitAttribute no están selladas, y proporcionan métodos base reemplazables que le dan mucho control sobre cómo deben ejecutarse los métodos que decoran esos atributos. Si bien xUnit.NET en su forma predeterminada le permite escribir clases de prueba que son similares a los accesorios de prueba de NUnit con sus métodos de prueba, no está limitado a esta forma de prueba unitaria. Usted es libre de extender el marco para admitir las especificaciones de preocupación / contexto / observación de estilo BDD, como se muestra aquí .
xUnit.NET también admite pruebas de estilo de ajuste directamente de fábrica con su atributo de teoría y los atributos de datos correspondientes. Los datos de entrada de ajuste se pueden cargar desde Excel, la base de datos o incluso una fuente de datos personalizada, como un documento de Word (al extender el atributo de datos base). Esto le permite capitalizar en una única plataforma de prueba tanto para pruebas unitarias como para pruebas de integración, que puede ser enorme para reducir las dependencias del producto y la capacitación requerida.
También se pueden implementar otros enfoques para las pruebas con xUnit.NET ... las posibilidades son bastante ilimitadas. Combinados con otro marco burlón muy avanzado, Moq , los dos crean una plataforma muy flexible, extensible y potente para implementar pruebas automatizadas.
fuente
Trait
realmente hace o si puede agrupar diferentes pruebas dentro de la prueba para padres solteros (por ejemplo, todastests
dentro de atestfixture
). nUnit crea una gran vista jerárquica en lugar de la vista plana de pruebas de xUnit. Además, la nomenclatura no tiene sentido: ¿hechos y teoría? ¡Ser realista! Esos son mejor llamados pruebas y datos.NUnit es probablemente el más compatible con las herramientas de terceros. También ha existido por más tiempo que los otros tres.
Personalmente, no me importan mucho los marcos de prueba de unidad, las bibliotecas burlonas son en mi humilde opinión mucho más importantes (y te encierran mucho más). Solo elige uno y quédate con él.
fuente
No iría con MSTest. Aunque es probablemente la prueba más futura de los marcos con Microsoft detrás, no es la solución más flexible. No funcionará solo sin algunos hacks. Por lo tanto, ejecutarlo en un servidor de compilación que no sea TFS sin instalar Visual Studio es difícil. El visual studio test-runner es en realidad más lento que Testdriven.Net + cualquiera de los otros frameworks. Y debido a que las versiones de este marco están vinculadas a las versiones de Visual Studio, hay menos actualizaciones y, si tiene que trabajar con un VS anterior, está vinculado a un MSTest anterior.
No creo que importe mucho cuál de los otros frameworks utilizas. Es realmente fácil cambiar de uno a otro.
Yo personalmente uso XUnit.Net o NUnit dependiendo de la preferencia de mis compañeros de trabajo. NUnit es el más estándar. XUnit.Net es el marco más delgado.
fuente
Considere complementar, no reemplazar, MSTest con otro marco de prueba. Puede mantener la integración de Visual Studio MSTest mientras obtiene los beneficios de un marco de prueba más completo.
Por ejemplo, uso xUnit con MSTest. Agregue una referencia al ensamblado xUnit.dll y simplemente haga algo como esto. Sorprendentemente, ¡simplemente funciona!
fuente
Suprisingly, it just works!
Acabas de llamar a una función estática desde otro ensamblado. ¿Por qué te sorprende que funcione? Además, si solo necesita afirmaciones de por qué no usar un ensamblaje específicamente hecho para eso.Nunit no funciona bien con proyectos de modo mixto en C ++, así que tuve que abandonarlo
fuente
No es un gran problema a pequeña escala / personal, pero puede convertirse en un gran negocio rápidamente a mayor escala. Mi empleador es una gran tienda de Microsoft, pero no quiere / no puede comprar en Team System / TFS por varias razones. Actualmente utilizamos Subversion + Orcas + MBUnit + TestDriven.NET y funciona bien, pero obtener TD.NET fue una gran molestia. La sensibilidad de la versión de MBUnit + TestDriven.NET también es una gran molestia, y tener una cosa comercial adicional (TD.NET) para revisión legal y adquisición para manejar y administrar, no es trivial. Mi empresa, al igual que muchas empresas, está gorda y contenta con un modelo de suscripción a MSDN, y no está acostumbrado a gestionar adquisiciones únicas para cientos de desarrolladores. En otras palabras, la oferta de MS totalmente integrada, aunque definitivamente no siempre es lo mejor, es un valor agregado significativo en mi opinión.
Creo que seguiremos con nuestro paso actual porque funciona y ya hemos superado el problema organizativo, pero seguro que me gustaría que MS tuviera una oferta convincente en este espacio para que podamos consolidar y simplificar un poco nuestra pila de desarrolladores.
fuente
No es gran cosa, es bastante fácil cambiar entre ellos. La integración de MSTest tampoco es un gran problema, solo tome testdriven.net.
Como dijo la persona anterior, elija un marco burlón, mi favorito en este momento es Moq.
fuente