Pregunta

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 ampliamente aceptado. MSTest nuevamente está integrado en Visual Studio ...

¿Fue útil?

Solución

Sé que este es un hilo antiguo, pero pensé en publicar un voto para 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 se deben ejecutar 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. En combinación con otro marco burlón muy avanzado, Moq , ambos crean un sistema muy flexible, extensible y potente. plataforma para implementar pruebas automatizadas.

Otros consejos

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 de burlas son en mi humilde opinión mucho más importantes (y te encierran mucho más). Simplemente elige uno y quédate con él.

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 más antiguo, está vinculado a un MSTest más antiguo.

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.

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!

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Assert = Xunit.Assert;  // <-- Aliasing the Xunit namespace is key

namespace TestSample
{
    [TestClass]
    public class XunitTestIntegrationSample
    {
        [TestMethod]
        public void TrueTest()
        {
            Assert.True(true);  // <-- this is the Xunit.Assert class
        }

        [TestMethod]
        public void FalseTest()
        {
            Assert.False(true);
        }
    }
}

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, como muchas empresas, está gorda y contenta con un modelo de suscripción a MSDN, y simplemente 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 la mejor opción, es un valor agregado significativo en mi opinión.

Creo que nos mantendremos con nuestro paso actual porque funciona y ya hemos superado el obstáculo organizacionalmente, pero seguro que desearía que MS tuviera una oferta convincente en este espacio para que podamos consolidar y simplificar nuestra pila de desarrolladores. bit.

Nunit no funciona bien con proyectos de modo mixto en C ++, así que tuve que soltarlo

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.

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