You are on page 1of 26

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;

private double m_balance;

private bool m_frozen = false;

private BankAccount()
{
}
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;
}

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 unitarias


Tutorial: Ejecutar pruebas y ver la cobertura del código
Tutorial: Utilizar la utilidad de prueba de la línea de comandos
Tutorial: Crear y ejecutar pruebas unitarias
Visual Studio 2010
Otras 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.

Nota
Para obtener información acerca de cómo ejecutar pruebas desde una línea de comando, vea Tutorial: Ut
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.
 Nota
Si 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.

 Nota
Si el archivo Class1.cs no se abre en el editor de código, en el Explorador de soluciones, haga dob

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 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().

 Nota
Se asigna automáticamente a cada método de prueba el atributo TestMethod(). Cada prueba corr
código en pruebas que se desea probar. Los métodos de prueba se albergan en una clase de prueb
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.

 Nota
Má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

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.

 Nota
Esta instrucción Assert incluye un tercer parámetro, delta, con un valor de 0.05. El parámetro de
métodoAssert.AreEqual; compensa el error de redondeo intrínseco de los tipos de punto flotante
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.

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.

 Nota
No hace falta recompilar el proyecto de prueba después de cambiar el código fuente, porque cuan
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.

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 account
15.     try
16.     {
17.         target.Credit(1.00);
18.     }
19.     catch (System.Exception)
20.     {
21.         // Threw exception. FreezeAccount worked correctly: Pass test.
22.         creditAccount = true;
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


Tutorial: Ejecutar pruebas y ver la cobertura del
código
Visual Studio 2010
Otras 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ón
Para 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.
Se muestra el cuadro de diálogo Detalles de Cobertura de código para configurar la
recolección de cobertura de código.

 Precaución
La recopilación de datos de cobertura de código no funciona si la configuración de pruebas tambi
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.

 Nota
Para restablecer la configuración de este adaptador de datos de diagnóstico, haga clic en Restable
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.

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 unitarias


Proyecto de ejemplo para crear pruebas unitarias
Cómo: Aplicar configuraciones de pruebas desde Microsoft Visual Studio

Otros recursos

Crear una configuración de pruebas para ejecutar pruebas automatizadas desde Visual Studio
Tutorial: Utilizar la utilidad de prueba de la línea de
comandos
Visual Studio 2010
Otras 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.

 Nota
Su proyecto de código de producción y su proyecto de prueba generarán ensamblados distintos. A
línea de comandos en el ensamblado del proyecto de prueba, no en el ensamblado de su proyecto

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

 Nota
Si realiza el procedimiento "Crear y ejecutar un prueba unitaria para un método privado" de Tuto
este 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.

 Nota
Para obtener más información acerca de todas las opciones que puede utilizar con el comando MS
comandos 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 MSTest
Tutorial: Crear y ejecutar pruebas unitarias

Conceptos

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


Opciones de la línea de comandos para MSTest.exe
Visual Studio 2010
Otras 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 Para cargar un archivo que contenga pruebas.


archivo]
Ejemplo: /testcontainer:tests.dll

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


/testmetadata:[nombre de Para cargar un archivo que contenga metadatos de pruebas. Para obtener m
archivo]
/testlist:[ruta de acceso de Para especificar la lista de pruebas que se van a ejecutar, según se indica en
lista de pruebas] más información, vea/testlist.
/category:[filtro de Especifique y filtre qué categorías de pruebas se van a ejecutar. Para obten
categoría de pruebas]
/test:[el nombre de pruebas] Para especificar el nombre de una prueba que se va a ejecutar. Para obtene
/noisolation Ejecuta las pruebas en el proceso MSTest.exe. Esta opción mejora la veloc
aumenta el riesgo del proceso MSTest.exe.
/testsettings: [nombre de Use el archivo de configuración de pruebas especificado.
archivo]
Ejemplo: /testsettings:Local.Testsettings

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


/runconfig:[nombre de Para utilizar el archivo de configuración de la ejecución especificado.
archivo]
Ejemplo: /runconfig:localtestrun.Testrunconfig

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

Nota
Esta opción de la línea de comandos se mantiene por motivos de compatib
Microsoft Visual Studio 2010.Las configuraciones de las ejecuciones de pr
configuraciones de pruebas en Visual Studio 2010 Ultimate.

/resultsfile:[nombre de Para guardar los resultados de la ejecución de pruebas en el archivo especi


archivo]
Ejemplo: /resultsfile:testResults.trx

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


/unique Para ejecutar la prueba únicamente si se encuentra una coincidencia única
elemento /test especificado. Para obtener más información, vea /unique.
/detail:[identificador de Para especificar el nombre de una propiedad de la que desea mostrar valor
propiedad] 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 proye


/publishresultsfile:[nombre de Para especificar el nombre del archivo de resultados que se va a p
archivo] nombre de archivo de resultados, se utiliza el archivo generado en
/publishbuild:[identificador de Para publicar resultados de pruebas utilizando este identificador d
generación]
/teamproject:[nombre del proyecto Para especificar el nombre del proyecto de equipo al que pertenec
de equipo]
/platform:[platform] Para especificar la plataforma de la versión en la que se deben pub
/flavor:[tipo] Para especificar el tipo de generación en el que se deben publicar
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.
/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.

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

 Nota
Puesto que el archivo de metadatos de prueba también contiene pruebas que se pueden ejecutar, no se de
opciones /testcontainer y/testmetadata en una misma línea de comandos. Hacerlo resultaría ambiguo y

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

 Nota
Puesto 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

Si se utiliza la opción /testmetadata, se recomienda indicar pruebas específicas para ejecutar


mediante la opción /test o /testlist, o ambas.
/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.

 Nota
Só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.

 Nota
Debe 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".

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

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

 Nota
Puede 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".

 Nota
El valor que se especifique con la opción /test se prueba no sólo para el nombre de la prueba, sino tambié
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.

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

 Nota
Para obtener más información sobre los archivos de configuración de pruebas, vea Crear una confi
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]

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 pro
computername isautomated rea
debugtrace link spo
description longtext std
displaytext name std
duration outcometext sto
errormessage owner tes
errorstacktrace parentexecid tes
executionid priority tes
groups projectname trac

 Nota
La selección real de los identificadores de propiedad que se pueden usar con la opción /detail varía según
consiguiente, esta lista es sólo una aproximación. En particular, si está utilizando los tipos de prueba pers
propiedades será diferente. Para saber qué identificadores de propiedad se pueden usar, examine el archiv
generado por la ejecución de prueba. Para obtener más información acerca de los archivos de resultados
Guardar 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 pruebas


Ejecutar pruebas automatizadas desde la línea de comandos

You might also like