proyecto de ejemplo para crear pruebas unitarias

31
Proyecto de ejemplo para crear pruebas unitarias Visual Studio 2010 Otras versiones El ejemplo "Woodgrove Bank" contiene código que puede incorporar en un programa sencillo. Después, puede generar pruebas unitarias para probar los diversos métodos, públicos y privados, del programa Woodgrove Bank. Este código de ejemplo se proporciona para su uso en los siguientes tutoriales: Tutorial: Crear y ejecutar pruebas unitarias. Este tutorial le guía a lo largo de los pasos necesarios para crear y personalizar pruebas unitarias, ejecutarlas y examinar sus resultados. Tutorial: Ejecutar pruebas y ver la cobertura del código. Este tutorial muestra cómo ver los datos de cobertura de código, que muestran la proporción de código del proyecto que se está probando. Tutorial: Utilizar la utilidad de prueba de la línea de comandos. En este tutorial, se emplea la utilidad de línea de comandos MSTest.exe para ejecutar pruebas y ver los resultados. Nota: el único error intencionado de este ejemplo es que en el método Debit "m_balance += amount" debe haber un signo menos, no un signo más, antes del signo igual. Código de ejemplo El código más reciente de este ejemplo está disponible aquí: using System; namespace BankAccountNS { /// <summary> /// Bank Account demo class. /// </summary> public class BankAccount { private string m_customerName;

Upload: josue-manuel-martinez-arellano

Post on 04-Jul-2015

897 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Proyecto de Ejemplo Para Crear Pruebas Unitarias

Proyecto de ejemplo para crear pruebas unitariasVisual Studio 2010Otras versiones

El ejemplo "Woodgrove Bank" contiene código que puede incorporar en un programa sencillo. Después, puede generar pruebas unitarias para probar los diversos métodos, públicos y privados, del programa Woodgrove Bank.

Este código de ejemplo se proporciona para su uso en los siguientes tutoriales:

Tutorial: Crear y ejecutar pruebas unitarias. Este tutorial le guía a lo largo de los pasos necesarios para crear y personalizar pruebas unitarias, ejecutarlas y examinar sus resultados.

Tutorial: Ejecutar pruebas y ver la cobertura del código. Este tutorial muestra cómo ver los datos de cobertura de código, que muestran la proporción de código del proyecto que se está probando.

Tutorial: Utilizar la utilidad de prueba de la línea de comandos. En este tutorial, se emplea la utilidad de línea de comandos MSTest.exe para ejecutar pruebas y ver los resultados.

Nota: el único error intencionado de este ejemplo es que en el método Debit "m_balance += amount" debe haber un signo menos, no un signo más, antes del signo igual.

Código de ejemplo

El código más reciente de este ejemplo está disponible aquí:

using System;

namespace BankAccountNS{ /// <summary> /// Bank Account demo class. /// </summary> public class BankAccount { private string m_customerName;

private double m_balance;

private bool m_frozen = false;

private BankAccount() { }

Page 2: Proyecto de Ejemplo Para Crear Pruebas Unitarias

public BankAccount(string customerName, double balance) { m_customerName = customerName; m_balance = balance; }

public string CustomerName { get { return m_customerName; } }

public double Balance { get { return m_balance; } }

public void Debit(double amount) { if (m_frozen) { throw new Exception("Account frozen"); }

if (amount > m_balance) { throw new ArgumentOutOfRangeException("amount"); }

if (amount < 0) { throw new ArgumentOutOfRangeException("amount"); }

m_balance += amount; }

public void Credit(double amount) { if (m_frozen) { throw new Exception("Account frozen"); }

if (amount < 0) { throw new ArgumentOutOfRangeException("amount"); }

m_balance += amount; }

private void FreezeAccount() { m_frozen = true; }

private void UnfreezeAccount() { m_frozen = false; }

Page 3: Proyecto de Ejemplo Para Crear Pruebas Unitarias

public static void Main() { BankAccount ba = new BankAccount("Mr. Bryan Walton", 11.99);

ba.Credit(5.77); ba.Debit(11.22); Console.WriteLine("Current balance is ${0}", ba.Balance); }

}}

/* Las compañías, organizaciones, productos, nombres de dominio, direcciones de correo electrónico, logotipos, personas, lugares y eventos que se describen aquí son ficticios. No se pretende ni se debe deducir asociación alguna con compañías, organizaciones, productos, nombres de dominio, direcciones de correo electrónico, logotipos, personas, lugares o eventos reales. */

Trabajar con el código

Para trabajar con este código, primero tiene que crear un proyecto para él en Visual Studio. Siga los pasos de la sección "Preparar el tutorial" en Tutorial: Crear y ejecutar pruebas unitarias.

Vea también

Tareas

Tutorial: Crear y ejecutar pruebas unitariasTutorial: Ejecutar pruebas y ver la cobertura del códigoTutorial: Utilizar la utilidad de prueba de la línea de comandos

Page 4: Proyecto de Ejemplo Para Crear Pruebas Unitarias

Tutorial: Crear y ejecutar pruebas unitariasVisual Studio 2010Otras versiones

Este tutorial le permite recorrer paso a paso el procedimiento de creación, ejecución y personalización de una serie de pruebas utilizando Microsoft Visual Studio 2010. 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.

NotaPara 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.

Requisitos previos

El proyecto Woodgrove Bank. Vea Proyecto de ejemplo para crear pruebas unitarias.

Prepare el tutorial

Para preparar el tutorial

1. Abra Visual Studio 2010 Premium.2. En el menú Archivo, elija Nuevo y haga clic en Proyecto.

Aparecerá el cuadro de diálogo Nuevo proyecto.

3. En Plantillas instaladas, haga clic en Visual C#.4. En la lista de tipos de aplicación, haga clic en Biblioteca de clases.5. En el cuadro Nombre, escriba Bank y, a continuación, haga clic en Aceptar.

Page 5: Proyecto de Ejemplo Para Crear Pruebas Unitarias

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

6. Se crea el nuevo proyecto Bank y se muestra en el Explorador de soluciones con el archivo Class1.cs abierto en el editor de código.

 NotaSi el archivo Class1.cs no se abre en el editor de código, en el Explorador de soluciones, haga doble clic en el archivo para abrirlo.

7. Copie el código fuente de Proyecto de ejemplo para crear pruebas unitarias.8. Reemplace el contenido original de Class1.cs con el código de Proyecto de

ejemplo para crear pruebas unitarias.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.

Crear una comprobación de unidades

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

Para crear una prueba unitaria

1. Si el archivo Class1.cs no está abierto en el editor de código, 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, 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 alberga la clase BankAccount. Desde esta página puede generar pruebas unitarias para cualquier selección de los miembros mostrados, así como elegir 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, seleccione Crear un nuevo 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

Page 6: Proyecto de Ejemplo Para Crear Pruebas Unitarias

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 Crear 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 TestProject1 se agrega un archivo denominado BankAccountTest.cs, que contiene una clase de prueba. La clase se rellena con una propiedad TestContext y con métodos para probar los métodos Debit() y Credit().

 NotaSe asigna automáticamente a cada método de prueba el atributo TestMethod(). Cada prueba corresponde a un método único en el código en pruebas que se desea probar. Los métodos de prueba se albergan en una clase de prueba a la que se asigna el atributo TestClass().

8. En BankAccountTest.cs, especifique valores para las variables que se van a probar. Desplácese al método DebitTest, donde verá líneas // TODO que indican las variables que se van a establecer.

9. Para saber qué valores se van a usar en el método DebitTest, abra el archivo Class1.cs y desplácese al método Main. Observe que el nombre del cliente se inicializa en Mr. Bryan Walton, el saldo de cuenta se inicializa en 11.99, el método Credit se invoca con el parámetro 5.77 y el método Debit se invoca con el parámetro 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.

 NotaMás adelante en este tutorial, usará el valor previsto de Balance (0.77).

10. En el archivo BankAccountTest.cs, desplácese al método DebitTest.11. Establezca los siguientes valores:12. BankAccount target = new BankAccount("Mr. Bryan Walton",

11.99);13. double amount = 11.22;

14. En el método CreditTest, agregue ("Mr. Bryan Walton", 11.99) al nuevo elemento BankAccount.

15. Guarde el archivo BankAccountTest.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.

Ejecutar y personalizar un prueba unitaria

Page 7: Proyecto de Ejemplo Para Crear Pruebas Unitarias

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

Para ejecutar y personalizar una prueba unitaria

1. En el menú Prueba, haga clic en Ventanas y seleccione Vista de pruebas.

Se muestra la ventana Vista de pruebas.

2. Haga clic con el botón secundario en DebitTest y seleccione Ejecutar selección.

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.

3. En la ventana Resultados de pruebas, haga clic con el botón secundario en la fila que representa la prueba y, a continuación, haga clic en Ver detalles de resultados de la prueba.

4. En la página Detalles de resultados de la prueba, aparece el mensaje de error "Assert.Inconclusive failed. 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.

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

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

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

Marque como comentario esta instrucción Assert.

8. 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:

9. 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.

 NotaEsta 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étodoAssert.AreEqual; compensa el error de redondeo intrínseco de los tipos de punto flotante como

Ha ejecutado el método DebitTest generado de su clase de prueba BankAccountTest, ha observado que necesitada cambios, y ha realizado

Page 8: Proyecto de Ejemplo Para Crear Pruebas Unitarias

esos cambios.Ahora está listo para probar la exactitud del método Debit en su aplicación.

Ejecutar un prueba unitaria y corregir el código

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

Para ejecutar una prueba unitaria y corregir el código

1. Haga de nuevo la prueba de Debit: en el archivo BankAccountTest.cs, haga clic con el botón secundario en el método DebitTest() y, a continuación, haga clic en Ejecutar pruebas.

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 clic con el botón secundario en la fila que representa la prueba y, a continuación, haga clic en Ver detalles de resultados de la prueba.

Se abrirá la página de detalles de resultados, donde aparecerá el mensaje "Error de Assert.AreEqual. Se esperaba una diferencia no superior a <0.05> entre el valor esperado <0.77> y el valor real <23.21>". Estos números parecen indicar un error en una operación matemática. Dado que el métodoDebitTest de la clase BankAccountTest prueba el método Debit de la clase BankAccount, compruebe en primer lugar el método Debit.

3. Abra el archivo Class1.cs y desplácese al método Debit.4. Observe la asignación siguiente:5. 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;

6. Ejecute de nuevo la prueba Debit.

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

 NotaNo hace falta recompilar el proyecto de prueba después de cambiar el código fuente, porque cuando una prueba se ejecuta automáticamente, compila 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.

Page 9: Proyecto de Ejemplo Para Crear Pruebas Unitarias

Crear y ejecutar un prueba unitaria para un método privado

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. Abra el archivo Class1.cs en el proyecto Bank.2. Haga clic con el botón secundario en el método FreezeAccount() y

seleccione Crear pruebas unitarias.

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

En la estructura de árbol mostrada, sólo está seleccionado el método FreezeAccount().

3. (Opcional) Haga clic en Filtro y, a continuación, desactive Mostrar elementos no públicos. Observe que el método FreezeAccount() se quita de la lista de métodos secundarios de la clase BankAccount. Haga clic de nuevo en Filtro y active Mostrar elementos no públicos para volver a mostrar el métodoFreezeAccount().

4. Asegúrese de que el método FreezeAccount() está seleccionado, y, a continuación, haga clic en Aceptar.

Se creará un nuevo archivo de descriptor de acceso privado con el nombre Bank.accessor. Contiene métodos de descriptores de acceso especiales que la prueba utiliza de manera indirecta para llamar a los métodos privados de la clase BankAccount. Puede ver el nuevo archivo mostrado en el Explorador de soluciones en la carpeta Test References.

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

6. Cambie el código del método FreezeAccountTest() para tenga el aspecto que se muestra a continuación. Se indican las áreas nuevas o modificadas:

7. public void FreezeAccountTest()8. {9.     BankAccount_Accessor target = new BankAccount_Accessor("Mr.

Bryan Walton", 11.99); // TODO: Initialize to an appropriate value

10. target.FreezeAccount(); 11.     // Assert.Inconclusive("A method that does not return a

value cannot be verified.");12.     13.     bool creditAccount = false; // False means account could be

credited: Fail test. 14.     // Try to credit account15.     try16.     {17.         target.Credit(1.00); 18.     }19.     catch (System.Exception)20.     {21.         // Threw exception. FreezeAccount worked correctly:

Pass test. 22.         creditAccount = true;

Page 10: Proyecto de Ejemplo Para Crear Pruebas Unitarias

23.     }24.     25.     // Assert fails if 'creditAccount' condition is false. Fail

test.26.     Assert.IsTrue(creditAccount, "Was able to credit

account.");27. }

28. Ejecute la prueba FreezeAccountTest.

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 la prueba llamaba al método Credit() después de inmovilizar la cuenta llamando al método FreezeAccount().

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

Pasos siguientes

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.

Si está usando Visual Studio 2010 Ultimate, puede crear pruebas de carga para aislar problemas de esfuerzo y rendimiento usando las pruebas unitarias.

Tutorial: Crear y ejecutar una prueba de carga que contenga pruebas unitarias

Vea también

Tareas

Proyecto de ejemplo para crear pruebas unitarias

Page 11: Proyecto de Ejemplo Para Crear Pruebas Unitarias

Tutorial: Ejecutar pruebas y ver la cobertura del códigoVisual Studio 2010Otras versiones

Para ver qué proporción del código de un proyecto se está probando realmente, utilice la característica de cobertura de código de Microsoft Visual Studio 2010.Para ello, primero edite la configuración de ejecución, para especificar el ensamblado que contiene el código cuya cobertura desea medir; a continuación, ejecute pruebas en ese código. Las estadísticas de la cobertura de código detalladas aparecen en una ventana, donde también puede ver, línea por línea, qué código se ha probado.

Requisitos previos

Complete los pasos del procedimiento "Ejecutar una prueba unitaria y corregir el código" en Tutorial: Crear y ejecutar pruebas unitarias. De este modo, se crean las dos pruebas que va a ejecutar en el procedimiento siguiente.

Ejecutar pruebas y ver la cobertura del código

Para ejecutar pruebas y ver la cobertura del código

1. En el Explorador de soluciones, anote el nombre de su solución. Si ha utilizado el proyecto de Tutorial: Crear y ejecutar pruebas unitarias, el nombre de la solución es Bank. Esta solución contiene el código que se está probando.

2. En Explorador de soluciones, en Elementos de la solución, haga doble clic en el archivo de configuración de pruebas, Local.testsettings.

Se muestra el cuadro de diálogo Configuración de pruebas.

3. Seleccione <Solo el equipo local> como el rol que se usará para recopilar los datos de cobertura de código.

 PrecauciónPara los datos de cobertura de código, debe ser el rol que ejecutará las pruebas.

4. Para modificar los valores predeterminados de cobertura de código, active la casilla para Cobertura de código y, a continuación, haga clic Configurarsituado sobre la lista de adaptadores de datos de diagnóstico.

Page 12: Proyecto de Ejemplo Para Crear Pruebas Unitarias

Se muestra el cuadro de diálogo Detalles de Cobertura de código para configurar la recolección de cobertura de código.

 PrecauciónLa recopilación de datos de cobertura de código no funciona si la configuración de pruebas también está configurada para recopilar información de IntelliTrace.

5. Seleccione los artefactos que desea instrumentar en la lista.6. (Opcional) para agregar otro ensamblado que no se muestra, haga clic

en Agregar ensamblado.

Se muestra el cuadro de diálogo Elegir ensamblados para instrumentar.

a. Busque el archivo de ensamblado (.exe, .dll o .ocx) que desea incluir en la cobertura de código y, a continuación, haga clic en Abrir. El archivo se agrega a la lista.

7. (Opcional) Seleccione Instrumentar ensamblados en contexto para instrumentar los archivos en la ubicación donde se compilan o después de copiarlos en un directorio de implementación. Para obtener más información sobre dónde instrumentar los ensamblados, vea Elegir la carpeta de instrumentación.

8. (Opcional) Si alguno de los ensamblados agregados tiene un nombre seguro, es posible que tenga que volver a firmar los ensamblados. Haga clic en (...) para buscar el archivo de claves que se debe usar para volver a firmarlos. Para obtener más información sobre cómo se vuelven a firmar los ensamblados, vea Instrumentar y volver a firmar ensamblados.

9. Haga clic en Aceptar. Las opciones de cobertura de código ya están configuradas y guardan para su configuración de pruebas.

 NotaPara restablecer la configuración de este adaptador de datos de diagnóstico, haga clic en Restablecer la configuración predeterminada.

10. Haga clic en Guardar como y, a continuación, haga clic en Guardar en el cuadro de diálogo. Aparece un cuadro de mensajes donde se indica que se guarde el archivo existente. Haga clic en Sí en el cuadro de mensaje para reemplazar el archivo existente.

11. En el menú Prueba, apunte a Seleccionar configuración de pruebas activa. Un submenú muestra todas las configuraciones de pruebas de la solución.Coloque una marca de verificación junto a las configuraciones que ha modificado, Local.testsettings. De este modo pasan a ser las configuraciones de pruebas activas.

12. En el Editor de lista de pruebas, active las casillas situadas junto a CreditTest y DebitTest, haga clic con el botón secundario del mouse y seleccioneEjecutar pruebas comprobadas.

Las dos pruebas se ejecutan.

13. En la barra de herramientas Herramientas de prueba, haga clic en Resultados de la cobertura de código.

Se abrirá la ventana Resultados de la cobertura de código.

Page 13: Proyecto de Ejemplo Para Crear Pruebas Unitarias

14. En la ventana Resultados de la cobertura de código, la columna Jerarquía muestra un nodo que contiene todos los datos de cobertura de código obtenidos en la última ejecución de prueba. El nodo de ejecución de prueba se nombra utilizando el formato <nombre de usuario>@<nombre de equipo> <fecha> <hora>. Expanda este nodo.

15. Expanda el nodo correspondiente al ensamblado, Bank.dll, para el espacio de nombres BankAccountNS y para la clase BankAccount.

16. Las filas de la clase BankAccount representan sus métodos. Las columnas de la tabla muestran estadísticas de cobertura para métodos individuales, para clases y para el espacio de nombres completo.

17. Haga doble clic en la fila correspondiente al método Debit.

El archivo de código fuente Class1.cs se abre en el método Debit. En este archivo, se puede ver código resaltado. Las líneas resaltadas en azul claro se utilizaron en la ejecución de pruebas, las líneas resaltadas en beige se utilizaron parcialmente y las líneas resaltadas en marrón rojizo no se utilizaron en absoluto. Desplazándose, se puede ver la cobertura para los otros métodos de este archivo.

Si activó la casilla correspondiente al archivo TestProject1.dll en el paso 7, abra el archivo de código fuente Class1Test.cs, que contiene las pruebas unitarias, para ver qué métodos de prueba se han utilizado. Se aplica el mismo esquema de resaltado: azul claro indica código utilizado; beige indica una ruta de acceso de código utilizada parcialmente y marrón rojizo indica una ruta de acceso de código que no se utilizó en la ejecución de pruebas.

Vea también

Tareas

Tutorial: Crear y ejecutar pruebas unitariasProyecto de ejemplo para crear pruebas unitariasCómo: Aplicar configuraciones de pruebas desde Microsoft Visual Studio

Otros recursos

Crear una configuración de pruebas para ejecutar pruebas automatizadas desde Visual Studio

Page 14: Proyecto de Ejemplo Para Crear Pruebas Unitarias

Tutorial: Utilizar la utilidad de prueba de la línea de comandosVisual Studio 2010Otras versiones

Este tutorial muestra cómo ejecutar pruebas unitarias desde un indicador de la línea de comandos y, a continuación, ver los resultados.

Requisitos previos

En el tutorial titulado, Tutorial: Crear y ejecutar pruebas unitarias realizan los siguientes procedimientos: "Prepara el Tutorial", "Crear un Prueba unitaria" y "Ejecutar un Prueba unitaria y Corrige Su Código."

El proyecto Woodgrove Bank. Vea Proyecto de ejemplo para crear pruebas unitarias.

Usar la utilidad de prueba de la línea de comandos

Para usar la utilidad de prueba de la línea de comandos

1. Abra un símbolo del sistema de Visual Studio.

Para ello, haga clic en Inicio, elija Todos los programas, seleccione Microsoft Visual Studio 2010, elija Visual Studio Tools y, por último, haga clic enSímbolo del sistema de Visual Studio 2010.

El símbolo del sistema se abrirá en la carpeta: <unidad>:\Archivos de programa\Microsoft Visual Studio 10.0\VC.

2. Cambie el directorio a la carpeta que contiene el ensamblado generado a partir de su proyecto de prueba.

Para ello, en primer lugar cambie al directorio de la carpeta de su solución. Para la solución Bank que se creó en el tutorial de requisitos previos, esta carpeta es: <unidad>:\Documents and Settings\<nombreDeUsuario>\Mis Documentos\Visual Studio\Projects\Bank. A continuación, cambie el directorio a la carpeta de su proyecto de prueba, escribiendo el comando siguiente en el símbolo del sistema:

cd TestProject1\bin\Debug

Esta carpeta contiene el proyecto de prueba que creó en los procedimientos de creación y ejecución de pruebas unitarias. El ensamblado del proyecto de prueba, TestProject1.dll, solo contiene algunas pruebas unitarias.

Page 15: Proyecto de Ejemplo Para Crear Pruebas Unitarias

 NotaSu proyecto de código de producción y su proyecto de prueba generarán ensamblados distintos. Asegúrese de ejecutar el programa de línea de comandos en el ensamblado del proyecto de prueba, no en el ensamblado de su proyecto de código de producción.

3. MSTest.exe es una utilidad de la línea de comandos que le permite iniciar y controlar la ejecución de las pruebas. Para ver las opciones que le ofrece MSTest.exe mediante sus opciones, escriba lo siguiente en el símbolo del sistema:

MSTest /?

4. Utilice la utilidad de línea de comandos para probar la aplicación.

Escriba lo siguiente en la línea de comandos:

MSTest /testcontainer:TestProject1.dll

Este comando ejecuta las tres pruebas y devuelve resultados como los siguientes:

Loading TestProject1.dll...

Starting Execution...

Results Top Level Tests

-------- ------------------

Inconclusive TestProject1.BankAccountTest.CreditTest

Passed TestProject1.BankAccountTest.DebitTest

Passed TestProject1.BankAccountTest.FreezeAccountTest

2/3 test(s) Passed, 1 Inconclusive

Summary

----------

Test Run Inconclusive.

Inconclusive 1

Passed 2

-----------------

Total 3

Results file: <path>\<test run name>.trx

Test Settings: Default Test Settings

Page 16: Proyecto de Ejemplo Para Crear Pruebas Unitarias

 NotaSi realiza el procedimiento "Crear y ejecutar un prueba unitaria para un método privado" de Tutorial: Crear y ejecutar pruebas unitariaseste comando también mostrará resultados para la prueba unitaria GetAccountTestType.

5. Ejecute otra vez las pruebas y guarde los resultados en un archivo especificado.

Escriba lo siguiente en la línea de comandos:

MSTest /testcontainer:TestProject1.dll /resultsfile:testResults1.trx

Este comando ejecuta las tres pruebas y devuelve los mismos resultados que en el paso anterior. También crea un archivo denominado testResults1.trx y escribe en él los resultados de las pruebas, en un formato compatible con un visor XML como Microsoft Internet Explorer o Microsoft Visual Studio. Si testResults1.trx ya existe, MSTest.exe no se ejecuta y se muestra un error para indicar que ya existe un archivo con ese nombre.

 NotaPara obtener más información acerca de todas las opciones que puede utilizar con el comando MSTest, veacomandos para MSTest.exe.

6. (Opcional) Vea el archivo de resultados de pruebas. Escriba lo siguiente en la línea de comandos:

testResults1.trx

Esto abre Internet Explorer y muestra los resultados de pruebas. O bien, puede abrir este archivo en el entorno integrado de desarrollo (IDE) de Visual Studio (IDE), de la siguiente manera:

a. Haga clic en Archivo, elija Abrir y, a continuación, haga clic en Archivo.

b. En el cuadro de diálogo Abrir archivo, abra la carpeta que contiene el archivo .xml.

c. Haga doble clic en testResults1.xml.

La utilidad de la línea de comandos MSTest.exe es especialmente útil para automatizar las ejecuciones de prueba, se inicien en archivos de proceso por lotes u otras utilidades.

Vea también

Tareas

Cómo: Ejecutar pruebas automatizadas desde la línea de comandos usando MSTestTutorial: Crear y ejecutar pruebas unitarias

Conceptos

Opciones de la línea de comandos para MSTest.exe

Page 17: Proyecto de Ejemplo Para Crear Pruebas Unitarias
Page 18: Proyecto de Ejemplo Para Crear Pruebas Unitarias

Opciones de la línea de comandos para MSTest.exeVisual Studio 2010Otras versiones

MSTest.exe es el comando de línea de comandos que se utiliza para ejecutar pruebas. Este comando tiene varias opciones que se pueden usar para personalizar la ejecución de pruebas. Muchas de estas opciones se pueden usar conjuntamente con otras; de hecho, ciertas opciones se deben usar conjuntamente con otras, como se describe en las secciones siguientes. Estas opciones se pueden especificar en cualquier orden en MSTest.exe en la línea de comandos.

MSTest.exe no distingue entre mayúsculas y minúsculas para interpretar las opciones o los valores que se especifican para ellas.

Las tablas siguientes muestran todas las opciones para MSTest.exe, con descripciones breves. Puede ver un resumen similar escribiendo MSTest/h en una línea de comandos.

Opciones generales de la línea de comandos

/testcontainer:[nombre de archivo]

Para cargar un archivo que contenga pruebas.

Ejemplo: /testcontainer:tests.dll

Para obtener más información, vea /testcontainer.

/testmetadata:[nombre de archivo]

Para cargar un archivo que contenga metadatos de pruebas. Para obtener más información, vea

/testlist:[ruta de acceso de lista de pruebas]

Para especificar la lista de pruebas que se van a ejecutar, según se indica en el archivo de metadatos.más información, vea/testlist.

/category:[filtro de categoría de pruebas]

Especifique y filtre qué categorías de pruebas se van a ejecutar. Para obtener más información, vea

/test:[el nombre de pruebas] Para especificar el nombre de una prueba que se va a ejecutar. Para obtener más información, vea

/noisolation Ejecuta las pruebas en el proceso MSTest.exe. Esta opción mejora la velocidad de ejecución de las pruebas pero aumenta el riesgo del proceso MSTest.exe.

/testsettings: [nombre de archivo]

Use el archivo de configuración de pruebas especificado.

Ejemplo: /testsettings:Local.Testsettings

Para obtener más información, vea /testsettings.

/runconfig:[nombre de archivo]

Para utilizar el archivo de configuración de la ejecución especificado.

Page 19: Proyecto de Ejemplo Para Crear Pruebas Unitarias

Ejemplo: /runconfig:localtestrun.Testrunconfig

Para obtener más información, vea /runconfig.

NotaEsta opción de la línea de comandos se mantiene por motivos de compatibilidad con versiones anteriores de Microsoft Visual Studio 2010.Las configuraciones de las ejecuciones de pruebas han sido reemplazadas por las configuraciones de pruebas en Visual Studio 2010 Ultimate.

/resultsfile:[nombre de archivo]

Para guardar los resultados de la ejecución de pruebas en el archivo especificado.

Ejemplo: /resultsfile:testResults.trx

Para obtener más información, vea /resultsfile.

/unique Para ejecutar la prueba únicamente si se encuentra una coincidencia única para algún elemento /test especificado. Para obtener más información, vea /unique.

/detail:[identificador de propiedad]

Para especificar el nombre de una propiedad de la que desea mostrar valores, si existen, además del resultado de la prueba. Para obtener más información, vea /detail.

/help Para mostrar el mensaje de uso de MSTest.exe (forma abreviada: /? o /h).

/nologo Para que no aparezcan pancartas de inicio ni mensajes de copyright.

/usestderr Utilice el error típico la información de error generada.

Opciones de la línea de comandos para publicar resultados de prueba

Para obtener más información acerca de estas opciones, vea Opciones de la línea de comandos para publicar resultados de pruebas.

/publish:[server name] Publica los resultados en la base de datos de la colección de proyectos de equipo del servidor especificado.

/publishresultsfile:[nombre de archivo]

Para especificar el nombre del archivo de resultados que se va a publicar.nombre de archivo de resultados, se utiliza el archivo generado en la ejecución activa.

/publishbuild:[identificador de generación]

Para publicar resultados de pruebas utilizando este identificador de versión.

/teamproject:[nombre del proyecto de equipo]

Para especificar el nombre del proyecto de equipo al que pertenece la versión.

/platform:[platform] Para especificar la plataforma de la versión en la que se deben publicar los resultados de pruebas.

/flavor:[tipo] Para especificar el tipo de generación en el que se deben publicar los resultados de pruebas.

Utilizar opciones de MSTest

Las secciones siguientes describen con más detalle muchas de las opciones para MSTest.exe. No incluye las opciones que se usaron para publicar los resultados de las pruebas. Para obtener más información acerca de esas opciones, vea Opciones de la línea de comandos para publicar resultados de pruebas.

Page 20: Proyecto de Ejemplo Para Crear Pruebas Unitarias

/testcontainer

/testcontainer:[nombre de archivo]

El contenedor de pruebas es un archivo que contiene las pruebas que se desea ejecutar. Por ejemplo, para pruebas por orden, el contenedor de pruebas es el archivo .orderedtest que define la prueba por orden. Para pruebas unitarias, es el ensamblado generado a partir del proyecto de prueba que contiene los archivos de código fuente de la prueba unitaria.

 NotaPara pruebas unitarias, éste es el ensamblado que contiene el código de la prueba, no el ensamblado que contiene el código de la aplicación que se está probando. Por ejemplo, si una solución contiene un proyecto denominado BankAccount y un proyecto de prueba correspondiente denominado BankAccountTest, especifique /testcontainer:BankAccountTest.dll.

 NotaPuesto que el archivo de metadatos de prueba también contiene pruebas que se pueden ejecutar, no se deben especificar las opciones /testcontainer y/testmetadata en una misma línea de comandos. Hacerlo resultaría ambiguo y generaría un error.

/testmetadata

/testmetadata:[nombre de archivo]

Puede utilizar la opción /testmetadata para ejecutar pruebas de varios contenedores de pruebas.

El archivo de metadatos de prueba se crea para una solución al crear listas de pruebas desde la ventana Editor de lista de pruebas. Este archivo contiene información sobre todas las pruebas incluidas en la ventana Editor de lista de pruebas. Se trata de todas las pruebas que existen en todos los proyectos de prueba en la solución.

El archivo de metadatos de prueba es un archivo XML que se crea en la carpeta de la solución. Este archivo se muestra en el Explorador de soluciones en el nodo Elementos de la solución. Un archivo de metadatos de prueba tiene la extensión .vsmdi y está asociado a la ventana Editor de lista de pruebas. Es decir, si hace doble clic en un archivo .vsmdi en el Explorador de Windows, el archivo abre Visual Studio y su contenido. Todas las pruebas de los proyectos de prueba de una solución se muestran en la ventana Editor de lista de pruebas.

El archivo de metadatos de prueba sólo se puede modificar efectuando cambios que se reflejen en la ventana Editor de lista de pruebas, como crear o eliminar pruebas, o cambiar las propiedades de una prueba.

 NotaPuesto que el contenedor de pruebas contiene pruebas que se pueden ejecutar, no se deben especificar las opciones /testcontainer y /testmetadata en una misma línea de comandos. Hacerlo resultaría ambiguo y generaría un error.

Si se utiliza la opción /testmetadata, se recomienda indicar pruebas específicas para ejecutar mediante la opción /test o /testlist, o ambas.

Page 21: Proyecto de Ejemplo Para Crear Pruebas Unitarias

/testlist

/testlist:[ruta de acceso de lista de pruebas]

La opción/testlist es una lista de pruebas, según el archivo de metadatos de prueba, que se van a ejecutar. Para ejecutar las pruebas contenidas en varias listas de pruebas, use varias veces la opción /testlist. Se ejecutará cualquier prueba por orden en la lista de pruebas.

 NotaSólo puede utilizar la opción /testlist si también utiliza la opción /testmetadata.

Las opciones /testlist y /test se pueden usar conjuntamente. Esto es equivalente a seleccionar una lista de pruebas y una o varias pruebas individuales en la ventana Editor de lista de pruebas y, después, hacer clic en Ejecutar pruebas.

/category

/category:[filtro de categoría de pruebas]

Use la opción /category para especificar qué categoría de pruebas se va a ejecutar.

 NotaDebe usar la opción /testcontainer para poder usar la opción /category.

Solo se puede usar la opción /category una vez por línea de comandos, pero puede especificar varias categorías de pruebas con el filtro de categoría de pruebas. El filtro de categoría de pruebas está compuesto por uno o varios nombres de categoría de pruebas separados por los operadores lógicos '&', '|' , '!', '&!'. Los operadores lógicos '&' y '|' no se pueden usar juntos para crear un filtro de categoría de pruebas.

Por ejemplo:

/category:group1 ejecuta las pruebas de la categoría de pruebas "group1". /category:"group1&group2" ejecuta las pruebas de las categorías de

pruebas "group1" y "group2". No se ejecutarán las pruebas que están solo en una de las categorías de pruebas especificadas.

/category:"group1|group2" ejecuta las pruebas que están en la categoría de pruebas "group1" o "group2". También se ejecutarán las pruebas que están en ambas categorías de pruebas.

/category:"group1&!group2" ejecuta las pruebas de la categoría de pruebas "group1" que no están en la categoría de pruebas "group2". No se ejecutará ninguna prueba que esté en la categoría de pruebas "group1" y "group2".

 NotaSi su filtro está compuesto por una sola categoría, como /category:group1, no tiene que escribir el filtro entre comillas dobles.embargo, si su filtro hace referencia a más de una categoría, como /category:"group1&group2", el filtro tiene que estar entre comillas dobles.

Page 22: Proyecto de Ejemplo Para Crear Pruebas Unitarias

/test

/test:[el nombre de pruebas]

Utilice la opción /test para especificar pruebas individuales para ejecutar. Para ejecutar varias pruebas, use varias veces la opción /test.

 NotaPuede utilizar la opción /test con /testcontainer o /testmetadata, pero no con ambas.

Las opciones /testlist y /test se pueden usar conjuntamente. Esto es equivalente a seleccionar una lista de pruebas y una o varias pruebas individuales en la ventana Editor de lista de pruebas y, después, hacer clic en Ejecutar pruebas.

La cadena que se especifique con la opción /test sirve para asociar los nombres de las pruebas en un contenedor de pruebas o en un archivo de metadatos de prueba. Esto significa que se pueden especificar varias pruebas utilizando un valor único para /test. Por ejemplo, si se indica /test:ittest, se generarían coincidencias para pruebas llamadas DebitTest y CreditTest porque los dos nombres de pruebas contienen la subcadena "ittest".

 NotaEl valor que se especifique con la opción /test se prueba no sólo para el nombre de la prueba, sino también para la ruta de acceso a esa prueba, como aparece en el Explorador de soluciones o, con pruebas unitarias, para su nombre completo.

A continuación, se presentan dos ejemplos de uso:

Ejemplo de prueba unitaria: El archivo UnitTest1.cs en el proyecto TestProject2 contiene una prueba unitaria denominada TestMethod1. Especificar un valor de "ittest" para la opción /test también funcionaría en esta prueba, ya que la cadena se prueba para el nombre completo "TestProject2.UnitTest1.TestMethod1" y la cadena "ittest" también aparece en "UnitTest1".

Ejemplo de prueba genérica: la línea de comandos siguiente ejecuta la prueba genérica especificada y, en los resultados de la prueba, se muestra la ruta de acceso completa a la prueba.

mstest /testcontainer:"C:\Documents and Settings\<user name>\My Documents\Visual Studio\Projects\TestProject2\TestProject2\generictest1.generic" /test:testproject32\generic

/noisolation

/noisolation

Utilice esta opción para ejecutar pruebas en el proceso MSTest.exe. Utilizar esta opción no produce ningún otro cambio en la configuración de la ejecución de prueba. El propósito de esta opción es mejorar la velocidad de ejecución de pruebas. Sin embargo, aumenta el riesgo de la ejecución de pruebas en general, porque una excepción no controlada iniciada por el código de pruebas haría que se bloqueara el proceso MSTest.exe.

Page 23: Proyecto de Ejemplo Para Crear Pruebas Unitarias

/testsettings

/testsettings:[nombre de archivo]

Use esta opción para especificar un archivo de configuración de pruebas. Por ejemplo: /testsettings:local.Testsettings.

Un archivo de configuración de pruebas se puede especificar de otras maneras, como con la opción /testmetadata. Las reglas que rigen la especificación de los archivos de configuración de pruebas se describen aquí.

Si se usa la opción /testsettings, se usará el archivo que especifica, independientemente de que también se use o no la opción /testmetadata.

Si se usa la opción /testmetadata para apuntar a un archivo de metadatos que especifica el archivo de configuración de pruebas activo, se usará este archivo si no se usa la opción /testsettings.

Si no se usa la opción /testsettings y tampoco se especifica un archivo de configuración de pruebas en el archivo de metadatos de prueba, la ejecución de pruebas usará el archivo de configuración de pruebas predeterminado.

 NotaPara obtener más información sobre los archivos de configuración de pruebas, vea Crear una configuración de pruebas para pruebas automatizadas como parte de un plan de pruebas.

/runconfig

/runconfig:[nombre de archivo]

Nota   Esta opción de la línea de comandos se mantiene por motivos de compatibilidad con versiones anteriores de Microsoft Visual Studio 2010. Las configuraciones de las ejecuciones de pruebas han sido reemplazadas por las configuraciones de pruebas en Visual Studio 2010 Ultimate.

Utilice esta opción para especificar un archivo de configuración de ejecución. Por ejemplo: /runconfig:localtestrun.Testrunconfig.

Un archivo de configuración de ejecución se puede especificar de otras maneras, como con la opción /testmetadata. Las reglas que rigen la especificación de archivos de configuración de ejecución se describen aquí.

Si se usa la opción /runconfig, se usará el archivo que especifica, independientemente de que también se use o no la opción /testmetadata.

Si se utiliza la opción /testmetadata para señalar un archivo de metadatos que especifica el archivo de configuración de ejecución activo, este archivo se utilizará si no se usa la opción /runconfig.

Si no se utiliza la opción /runconfig y tampoco se especifica un archivo de configuración de ejecución en el archivo de metadatos de prueba, la ejecución de prueba usará el archivo de configuración de ejecución predeterminado.

/resultsfile

/resultsfile:[nombre de archivo]

Page 24: Proyecto de Ejemplo Para Crear Pruebas Unitarias

Utilice esta opción para guardar los resultados de la ejecución de prueba en el archivo con nombre. Por ejemplo: /resultsfile:testResults.trx.

/unique

/unique

Utilice la opción /unique junto con la opción /test. La opción /unique le indica a MSTest.exe que haga una prueba sólo si es una coincidencia única al valor que proporciona con la opción /test.

Por ejemplo, el contenedor de pruebas MyTestProject contiene las pruebas denominadas MethodTest1 y MethodTest10.

La línea de comandos:

mstest /testcontainer:testproject2.dll /test:MethodTest1

ejecuta ambas pruebas, MethodTest1 y MethodTest10, porque "MethodTest1" es una subcadena de "MethodTest10".

Pero la línea de comandos:

mstest /testcontainer:testproject2.dll /test:MethodTest1 /unique

proporciona un error que no hay una coincidencia única para este nombre de pruebas. Puede identificar el nombre de pruebas singularmente utilizando el Identificador para la prueba de la que se hace una lista en la vista Propiedades para la prueba.

/usestderr

/usestderr

Al utilizar esta opción, la siguiente información se escribirá en el error estándar:

Las pruebas no superadas, anuladas, con errores, para las que se haya agotado el tiempo de espera, que no se pueden ejecutar o no ejecutadas.

Errores de ejecución. Errores al analizar los argumentos de la línea de comandos. Resumen de ejecución cuando la ejecución de pruebas no se ha superado.

Sin esta opción, todos los resultados se envían a la salida estándar.

/detail

/detail:[identificador de propiedad]

Esta opción se utiliza para mostrar propiedades de caso de prueba adicionales, si existen. Se puede pasar más de una instancia de la opción /detail, cada una de ellas con un solo identificador de propiedad, en una única línea de comandos. A continuación, se indican identificadores de propiedad válidos para la opción/detail:

adapter id projectrelativepath

Page 25: Proyecto de Ejemplo Para Crear Pruebas Unitarias

computername isautomated readonly

debugtrace link spoolmessage

description longtext stderr

displaytext name stdout

duration outcometext storage

errormessage owner testcategoryid

errorstacktrace parentexecid testname

executionid priority testtype

groups projectname traceinfo

 Nota

La selección real de los identificadores de propiedad que se pueden usar con la opción /detail varía según el tipo de prueba.consiguiente, esta lista es sólo una aproximación. En particular, si está utilizando los tipos de prueba personalizados, la selección de propiedades será diferente. Para saber qué identificadores de propiedad se pueden usar, examine el archivo de resultados de prueba generado por la ejecución de prueba. Para obtener más información acerca de los archivos de resultados de la prueba, veaGuardar y abrir resultados de pruebas en Visual Studio.

Si una propiedad existe para un caso de prueba específico, su información se incluye en el resumen de los resultados.

Por ejemplo, la línea de comandos:

mstest /testcontainer:Errors.dll /detail:testtype

genera el resultado siguiente, que contiene información del tipo de prueba:

...Results Top Level Tests-------- -----------------Inconclusive TestProject2.BankAccountTest.CreditTest[testtype] = Unit Test...

Vea también

Conceptos

Revisar resultados de pruebasEjecutar pruebas automatizadas desde la línea de comandos