Exportar (0) Imprimir
Expandir todo

Tutorial: Crear y ejecutar pruebas unitarias

Este tutorial le permite recorrer paso a paso el procedimiento de creación, ejecución y personalización de una serie de pruebas utilizando Herramientas para pruebas Team System. Se empieza con un proyecto C# que está en desarrollo, se crean pruebas que utilizan el código, se ejecutan las pruebas y se examinan los resultados. Por último, puede cambiar el código del proyecto y volver a ejecutar las pruebas.

NoteNota

Para obtener información acerca de cómo ejecutar pruebas desde una línea de comando, vea Tutorial: Utilizar la utilidad de prueba de la línea de comandos.

En este tutorial, se realizarán las siguientes tareas:

  • Prepare un proyecto "Bank Account" para utilizarlo en un tutorial.

  • Abra un proyecto existente.

  • Cree pruebas unitarias para métodos públicos y privados.

  • Ejecute estas pruebas en el código.

  • Busque y corrija los errores de las pruebas.

  • Busque y corrija los errores del código.

Para preparar el tutorial

  1. Abra Visual Studio 2005 Team para Testers.

  2. En el menú Archivo, elija Nuevo y haga clic en Proyecto.

    Aparecerá el cuadro de diálogo Nuevo proyecto.

  3. Bajo Tipos de proyecto, haga clic en Visual C#.

  4. En Plantillas, haga clic en Biblioteca de clases.

  5. En la línea Nombre, escriba Bank y haga clic en Aceptar.

    NoteNota

    Si el nombre "Bank" ya está en uso, elija otro nombre para el proyecto.

    Se crea el nuevo proyecto Bank y se muestra en el Explorador de soluciones.

  6. Haga doble clic en el archivo Class1.cs en el Explorador de soluciones, para abrirlo en el Editor de código de Visual Studio.

  7. Copie el código fuente de Ejemplo de prueba unitaria.

  8. Reemplace el contenido original de Class1.cs con el código de Ejemplo de prueba unitaria.

  9. En el menú Generar, haga clic en Generar solución.

Ahora tiene un proyecto denominado Bank que contiene código fuente para realizar pruebas y las herramientas necesarias para ello. El espacio de nombres de Bank, BankAccountNS, contiene la clase pública BankAccount cuyos métodos probará en los procedimientos siguientes.

Requisito previo: siga los pasos del procedimiento Preparar el tutorial.

Para crear una prueba unitaria

  1. En el Explorador de soluciones, haga doble clic en el archivo Class1.cs del proyecto Bank.

    Se abre el archivo de código fuente, que puede ver y editar.

    NoteNota

    El proyecto Bank contiene el código que desea probar, también llamado el código en pruebas o CUT.

  2. En la clase BankAccount del archivo Class1.cs, desplácese al método Debit().

  3. Haga clic con el botón secundario en el método Debit() y seleccione Crear pruebas unitarias.

    Aparecerá el cuadro de diálogo Crear pruebas unitarias.

    Bajo Selección actual, una estructura de árbol muestra la clase y la jerarquía de miembros del ensamblado que aloja la clase BankAccount. Desde esta página puede generar pruebas unitarias para cualquier selección de los miembros mostrados, así como seleccionar un proyecto en el que colocar las pruebas generadas.

    En la estructura de árbol, sólo está seleccionado el método Debit(). Déjelo seleccionado y seleccione también el método Credit().

  4. Para Proyecto de salida, haga clic en Crear proyecto de prueba de Visual C#.

  5. Haga clic en Settings.

    Aparece el cuadro de diálogo Configuración de generación de la prueba. Bajo Configuración de nombres, puede cambiar la manera en que se asignan nombres a los archivos, las clases y los métodos de prueba cuando se generan. Bajo General, puede cambiar otros aspectos de generación de la prueba. Conserve los valores predeterminados para esta configuración y, a continuación, haga clic en Aceptar.

  6. En el cuadro de diálogo Generar pruebas unitarias, haga clic en Aceptar.

    Se muestra el cuadro de diálogo Nuevo proyecto de prueba.

  7. Acepte el nombre predeterminado y haga clic en Crear.

    Se crea un proyecto llamado TestProject1, que se muestra en el Explorador de soluciones.

    A este proyecto de prueba se agrega un archivo denominado Class1Tests.cs, que contiene una clase de prueba. La clase se rellena con un método de inicialización, un método de limpieza y métodos para probar los métodos Debit() y Credit().

    NoteNota

    Se asigna automáticamente a cada método de prueba el atributo TestMethod(). Cada prueba corresponde a un método único en el CUT que se desea probar. Los métodos de prueba se alojan en una clase de prueba a la que se asigna el atributo TestClass().

  8. En Class1Tests.cs, especifique valores para las variables que se van a probar. Desplácese al método DebitTest, donde verá tres líneas // TODO que indican las variables para establecer, a saber, customerName, balance y amount. ¿Qué valores debería utilizar? Para averiguarlo, debe conocer los valores que se utilizarán cuando se ejecute la aplicación.

  9. En el Explorador de soluciones, abra el archivo Class1.cs, haciendo doble clic en él, y desplácese al método Main. Observe que el nombre del cliente se inicializa con Mr. Bryan Walton, el saldo de la cuenta se inicializa en 11.99, se llama al método Credit con un parámetro de 5.77 y se llama al método Debit con un parámetro de 11.22. Por consiguiente, si esta cuenta empieza con un saldo en Balance de 11.99, una llamada al método Debit mientras se pasa 11.22 debe producir un nuevo Balance de 0.77.

    NoteNota

    Utilizará este valor esperado de Balance (0.77) en el procedimiento Ejecutar y personalizar una prueba unitaria.

  10. Abra el archivo Class1Tests.cs y desplácese al método DebitTest.

  11. Establezca los siguientes valores:

    string customerName = "Mr. Bryan Walton";
    double balance = 11.99;
    double amount = 11.22;
    
  12. Guarde el archivo Class1Tests.cs.

Ha creado un archivo de código fuente que contiene pruebas para el proyecto Bank. Ahora está listo para ejecutar las pruebas en la clase BankAccountTest del código del proyecto Bank.

Requisito previo: siga los pasos del procedimiento Crear una prueba unitaria.

Para ejecutar y personalizar una prueba unitaria

  1. En la ventana Administrador de pruebas o Vista de pruebas, ejecute la prueba unitaria DebitTest.

    Si la ventana Resultados de pruebas no estaba abierta, se abrirá ahora. Las ejecuciones de prueba DebitTest.

    En la columna Resultado de la ventana Resultados de pruebas, el estado de la prueba se muestra como En ejecución mientras se está ejecutando la prueba. Cuando termina la ejecución de la prueba, el resultado de la prueba cambia a No concluyente.

  2. En la ventana Resultados de pruebas, haga doble clic en la fila que representa la prueba.

    Se abrirá la página de detalles de resultados, que contiene información sobre los resultados de la prueba.

  3. Observe que en la página de detalles de resultados se muestra el mensaje "Error de Assert.Inconclusive. A method that does not return a value cannot be verified." Para crear una prueba correcta, empiece por buscar y evaluar esta instrucción Assert.

  4. Para encontrar el método de prueba que contiene la instrucción Assert, abra el archivo Class1Tests.cs y desplácese al método DebitTest().

  5. La instrucción Assert es la última línea del método DebitTest. Contiene el texto siguiente:

    Assert.Inconclusive("A method that does not return a value cannot be verified.");
    

    Marque como comentario esta instrucción Assert.

  6. Si ahora ejecutara la prueba, proporcionaría el resultado Sin error, pero sólo porque no comprueba nada. Debe agregar un código que compruebe los resultados esperados. Agregue la instrucción siguiente al final del método DebitTest:

    Assert.AreEqual((System.Convert.ToDouble(0.77)), target.Balance, 0.05);
    

    Esta instrucción compara el resultado esperado (0.77) con el resultado real de una llamada al método Balance de la clase BankAccount. Si los dos valores no coinciden, la instrucción Assert devuelve False, con lo que la prueba no se supera.

    NoteNota

    Esta instrucción Assert incluye un tercer parámetro, delta, con un valor de 0.05. El parámetro delta es necesario en esta sobrecarga del método Assert.AreEqual; compensa el error de redondeo intrínseco de los tipos de punto flotante como Doubles.

Ha ejecutado el método DebitTest generado de su clase de prueba BankAccountTest, ha observado que necesitada cambios, y ha realizado esos cambios. Ahora está listo para probar la exactitud del método Debit en su aplicación.

Requisito previo: siga los pasos del procedimiento Crear y personalizar una prueba unitaria.

Para ejecutar una prueba unitaria y corregir el código

  1. Ejecute la prueba Debit: seleccione el elemento DebitTest en Vista de pruebas y haga clic en Ejecutar. Alternativamente, haga clic con el botón secundario en DebitTest y seleccione Ejecutar selección.

    En la columna Resultado de la ventana Resultados de pruebas, el estado de la prueba se muestra como En ejecución mientras se está ejecutando la prueba. Cuando finaliza la ejecución de la prueba, el resultado de la prueba cambia a Error.

  2. En la ventana Resultados de pruebas, haga doble clic en la fila que representa la prueba.

    Se abrirá la página de detalles de resultados, donde aparecerá el mensaje "Error de Assert.AreEqual. Expected: < 0.77 >, Actual: < 23.21 >"; estos números parecen indicar un error en una operación matemática. Dado que el método DebitTest de la clase BankAccountTest prueba el método Debit de la clase BankAccount, compruebe en primer lugar el método Debit.

  3. En el Explorador de soluciones, haga doble clic en el archivo Class1.cs del proyecto Bank y desplácese al método Debit.

  4. Observe la asignación siguiente:

    m_balance += amount;
    

    Esta asignación suma una cantidad a un saldo cuando, en un método Debit, debería restarse. Cambie esta línea como sigue:

    m_balance -= amount;
    
  5. Ejecute de nuevo la prueba Debit.

    La columna Resultado de la ventana Resultados de pruebas muestra Sin error para DebitTest.

    NoteNota

    No hace falta volver a generar el proyecto después de cambiar el código fuente, porque la ejecución sin notificación de una prueba genera el proyecto.

Ha creado una prueba unitaria que funciona y, a través de ella, ha encontrado y corregido un error en el código.

Requisito previo: siga los pasos del procedimiento Crear una prueba unitaria y corregir el código.

Para crear y ejecutar una prueba unitaria para un método privado

  1. En el Explorador de soluciones, haga doble clic en el archivo Class1.cs del proyecto Bank.

  2. En la clase BankAccount del archivo Class1.cs, quite la marca de comentario del siguiente código.

    // new enum:
    public enum accountType
    {
        Gold,
        Platinum,
    }
    // private method:
    private accountType GetAccountType
    {
        get
        {
            if (Balance > 15.00)
                return accountType.Platinum;
            else
                return accountType.Gold;
        }
    }
    
  3. Haga clic con el botón secundario en el método GetAccountType() y seleccione Crear pruebas unitarias.

    Aparecerá el cuadro de diálogo Crear pruebas unitarias.

  4. En la estructura de árbol mostrada, sólo está seleccionado el método GetAccountType(). Manténgalo seleccionado y haga clic en Aceptar.

    Esto crea un nuevo archivo denominado VSCodeGenAccessors.cs, que contiene métodos de descriptor de acceso especiales que recuperan valores de entidades privadas en la clase BankAccount. Puede ver el nuevo archivo mostrado en el Explorador de soluciones en la carpeta del proyecto de prueba.

  5. Abra el archivo Class1Tests.cs y desplácese al método GetAccountTypeTest().

  6. Marque como comentario la línea siguiente:

    Assert.Inconclusive("Verify the correctness of this test method.");
    
  7. Dentro del método GetAccountTypeTest(), encuentre las tres instrucciones de asignación marcadas con // TODO: comentarios. Cambie estas líneas como sigue:

    string customerName = "Mr. Bryan Walton";
    double balance = 7.00;
    TestProject1.BankAccountNS_BankAccount_accountTypeAccessor val = TestProject1.BankAccountNS_BankAccount_accountTypeAccessor.Gold;
    
  8. Ejecute la prueba GetAccountTypeTest.

    En la columna Resultado de la ventana Resultados de pruebas, el estado de prueba final que se muestra es Sin error. Éste es el resultado esperado, porque con el saldo de la cuenta de 7.00, accountType deberían ser Gold.

  9. En GetAccountTypeTest(), cambie la asignación balance como sigue:

    double balance = 15.01;
    
  10. Vuelva a ejecutar la prueba GetAccountTypeTest.

    La prueba GetAccountTypeTest() comprueba el método GetAccountType() comparando el valor que vuelve con un valor esperado. En esta prueba, la devolución del valor Gold para un saldo de cuenta de 15.01 es incorrecta. Por consiguiente, la prueba genera como se esperaba un resultado de Error, que indica que el número probado está fuera del intervalo para el tipo de cuenta Gold.

Ha agregado un método privado, ha creado una nueva prueba unitaria para él y ha ejecutado la prueba. Puede ejecutarla más veces, utilizando para la variable balance otros valores extremos, como 15.00.

Cuando se ejecutan pruebas de código en un ensamblado, se puede ver la proporción del código del proyecto que se está probando mediante la recopilación de datos de cobertura de código. Para obtener más información, vea Tutorial: Ejecutar pruebas y ver la cobertura del código.

Puede ejecutar las pruebas en una línea de comandos en lugar de en Visual Studio. Para obtener más información, vea Tutorial: Utilizar la utilidad de prueba de la línea de comandos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft