Cómo trabajar con el marco xUnit.Net

He estado usando xUnit durante bastante tiempo, y es mi marco de prueba de unidades preferido. Es una herramienta de prueba unitaria de código abierto para .Net framework que es compatible con ReSharper, CodeRush, TestDriven.Net y Xamarin. Puede aprovechar xUnit.Net para hacer valer un tipo de excepción fácilmente. Además, puede extender los atributos Fact o Theory en xUnit.Net y proporciona un excelente soporte para escribir pruebas unitarias parametrizadas. Aquí está el enlace del repositorio de Github para xUnit.Net.

A continuación, se explica cómo trabajar con xUnit.net en Visual Studio. Para esta demostración, usaremos Visual Studio 2015, aunque también puede trabajar con otras versiones compatibles de Visual Studio. Ahora, siga estos sencillos pasos para configurar su entorno para trabajar con xUnit.Net en Visual Studio.

  1. Abrir Visual Studio 2015 UDE
  2. Crea un nuevo proyecto de tipo "Biblioteca de clases"
  3. Guarda el proyecto con un nombre
  4. A continuación, instale xUnit.Net a través del Administrador de paquetes NuGet

¡Y eso es! Para ejecutar las pruebas unitarias dentro de Visual Studio IDE, puede usar el corredor xUnit.net para Visual Studio. Esto es lo que debe especificar para instalar el paquete xUnit.net [Runner: Visual Studio] usando la ventana de la consola del Administrador de paquetes:

Install-Package xunit.runner.visualstudio -Version 2.1.0

Esto es todo lo que necesitará para configurar su entorno de modo que pueda ejecutar las pruebas unitarias xUnit.Net desde dentro del IDE de Visual Studio.

Hechos y teorías

Contrariamente al atributo [Test] popular con el que quizás esté familiarizado, necesitaría usar el atributo [Fact] para escribir sus métodos de prueba unitaria usando xUnit.net. Tenga en cuenta que xUnit.net admite dos tipos de pruebas unitarias: hechos y teorías.

Mientras que los hechos se utilizan para probar condiciones invariantes, las teorías son pruebas que son verdaderas para un conjunto particular de datos pasados ​​como argumento para el método. Por lo general, usaría el atributo [Fact] para escribir pruebas unitarias que no tienen argumentos de método.

Sin embargo, el atributo [Theory] necesita una o más instancias de DataAttribute para pasar como argumentos de método. En esencia, querrá usar el atributo [Teoría] para escribir pruebas unitarias controladas por datos. Las pruebas unitarias controladas por datos son aquellas que se ejecutan en diversos conjuntos de datos.

Suponiendo que xUnit.Net y su corredor para Visual Studio están instalados, primero escribamos una prueba unitaria simple usando el atributo [Fact]. Considere el siguiente método de prueba unitaria: aquí aprovecharemos el atributo [Hecho].

[Fact]

 public void CheckEqualityTest()

  {

     Assert.Equal(10, Sum(5, 5));

  }

El método Sum acepta dos enteros y devuelve la suma de ellos.

  private int Sum(int x, int y)

  {

    return x + y;

  }

Cuando ejecuta esta prueba, la prueba unitaria pasa; puede verlo en el Explorador de pruebas de Windows en su IDE de Visual Studio. Exploremos ahora cómo podemos trabajar con teorías para ejecutar pruebas unitarias basadas en datos.

El siguiente fragmento de código ilustra cómo puede trabajar con pruebas unitarias controladas por datos utilizando xUnit.Net.

[Theory, InlineData("This is a data driven test", "data")]

 public void CheckInputTest(string input, string substring)

 {

      Assert.Equal(true, input.Contains(substring));

 }

Consulte el fragmento de código proporcionado anteriormente. Tenga en cuenta el uso del atributo [Teoría]. A menos que sus pruebas unitarias estén basadas en datos, debe optar por el atributo [Hecho] en sus métodos de prueba unitaria. Observe cómo se han pasado los parámetros en el método de prueba unitario controlado por datos denominado CheckInput. El atributo InlineData proporciona los datos del código fuente. En este ejemplo, los datos se pasan al método de prueba unitaria a través de valores en línea. También puede tener varios atributos InlineData, solo necesita separarlos con una coma. Así es como puede lograrlo.

[Theory, InlineData("This is a data driven test", "data"),

            InlineData("This is another set of data for the data driven test", "data")]

        public void CheckInputTest(string input, string substring)

        {

            Assert.Equal(true, input.Contains(substring));

        }

Cuando ejecuta la prueba basada en datos anterior, el método CheckInputTest se ejecutará dos veces, una para cada conjunto de datos de entrada.