Información general de pruebas unitarias

Actualización: noviembre 2007

Las pruebas unitarias son pruebas de programación escritas en Visual C# o Visual Basic, o en Visual C++ y compiladas con /clr:safe.

Nota:

Para obtener información detallada acerca de cómo utilizar las pruebas unitarias con el código de producción de C++ y cómo utilizar las pruebas unitarias escritas en C++, vea Pruebas unitarias y C++.

Las pruebas unitarias se utilizan para ejecutar otro código fuente llamando directamente a los métodos de una clase, pasando los parámetros apropiados. A continuación, si incluye instrucciones ASSERT, éstas pueden probar los valores que se generan con respecto a los valores esperados. Los métodos de pruebas unitarias residen en clases Test, que se almacenan en archivos de código fuente.

Para crear pruebas unitarias, se puede utilizar una característica de generación de código que crea el código fuente inicial de la prueba, o se puede escribir la prueba completamente a mano. De cualquier modo, la clase Test y todos los métodos de pruebas se identifican mediante atributos de programación.

Cada clase Test se marca con el atributo [TestClass()]. Cada prueba unitaria es un método de prueba que se marca con el atributo [TestMethod()]. Estos atributos se asignan automáticamente al generarse las pruebas unitarias. Cuando se codifican las pruebas unitarias manualmente, el usuario tiene que agregar los atributos de clase y de método. Para obtener más información, vea Estructura de las pruebas unitarias.

Generar pruebas unitarias

Las pruebas unitarias se pueden generar utilizando un cuadro de diálogo al que se tiene acceso a través de las ventanas de herramientas de Visual Studio. Cada prueba unitaria se crea como un método de C#, Visual Basic o Visual C++. Su código y sus atributos residen en un archivo de código fuente en un proyecto de prueba del mismo lenguaje. La nueva prueba se orienta al código específico que se desea probar. Puede generar una prueba unitaria para un método individual, varias pruebas para métodos que seleccione, o varias pruebas para todos los métodos de una clase o un espacio de nombres.

Puede generar pruebas unitarias desde el código fuente del proyecto actual. También puede generar pruebas unitarias desde un ensamblado del sistema de archivos, lo que resulta útil cuando el código fuente no está disponible.

El código de una prueba recién generada se compila pero, para que pueda proporcionar resultados útiles, primero se debe editar. Por ejemplo, podría editarlo para realizar asignaciones de variables o para personalizar instrucciones Assert. Las pruebas unitarias generadas contienen instrucciones TODO que indican qué líneas de código se deben editar.

Nota:

Herramientas para pruebas Team System utiliza convenciones de nomenclatura al generar pruebas unitarias. Por ejemplo, un archivo de prueba se nombra concatenando la palabra "Test" con el nombre del archivo que contiene el código que se va a probar; por ejemplo, "Class1Test.cs". Los nombres de las clases Test y los métodos de prueba también se generan utilizando valores predeterminados. Estos valores se pueden cambiar en el cuadro de diálogo Configuración de generación de pruebas, que se abre haciendo clic en Configurar, en el cuadro de diálogo Generación de pruebas unitarias.

Para obtener más información, vea Cómo: Generar una prueba unitaria.

Crear pruebas unitarias

Una prueba unitaria también se puede crear manualmente, sin utilizar la característica de generación. La mejor manera de hacerlo es agregar una prueba unitaria a un proyecto de prueba. De este modo, se crea un método de prueba que no contiene código, pero que tiene el atributo [TestMethod()] aplicado. Para completar la prueba, se debe editar en su archivo de código fuente, que a su vez reside en un proyecto de prueba de la solución. Para obtener más información, vea Cómo: Crear una prueba unitaria y Estructura de las pruebas unitarias.

El marco de pruebas unitarias

El marco de pruebas unitarias proporciona muchas clases Assert adicionales y otras clases que le proporcionan flexibilidad para escribir pruebas unitarias. Para obtener más información, consulte la documentación acerca del espacio de nombres y los tipos de Marco de pruebas unitarias, en Microsoft.VisualStudio.TestTools.UnitTesting.

Herencia de las clases de prueba

Una clase de prueba es cualquier clase que se marca con el atributo TestClass. Ahora, las clases de prueba pueden heredar miembros de otras clases de prueba. Esto significa que es posible crear pruebas reutilizables en clases de prueba base; las clases de prueba derivadas pueden heredar las pruebas de las clases de prueba base. Esta característica elimina el código de prueba duplicado y aporta mayor flexibilidad a los programadores mientras realizan las pruebas unitarias del código de producción.

Una clase de prueba no puede heredar de una clase que se encuentra en un ensamblado diferente. Puede evitar esta limitación de la siguiente manera:

  1. Defina la clase de prueba base en un archivo de código fuente y agregue el archivo al Proyecto A.

  2. Agregue el mismo archivo de código fuente a un proyecto diferente, el Proyecto B. Para ello, haga clic con el botón secundario en el proyecto en el Explorador de soluciones, seleccione Agregar, elija Elemento existente y, a continuación, utilice el cuadro de diálogo Agregar elemento existente para seleccionar el archivo.

  3. Aunque el Proyecto B se genera en un ensamblado diferente, incluye la clase de prueba base. Otras clases de prueba del Proyecto B pueden heredar de esa clase de prueba base.

Ejemplo de herencia

El código de producción tiene dos implementaciones: una utiliza un servidor de Microsoft SQL Server y, la otra, utiliza Oracle. Ambas implementaciones deben funcionar de la misma manera. Puede crear una clase de prueba abstracta denominada DBTestSuite que contiene el código de prueba estándar. A continuación, puede crear dos clases, SQLTestSuite y OracleTestSuite, ambas derivadas de DBTestSuite. Las clases derivadas sólo necesitan implementar el método Connect abstracto. Así pues, una clase de prueba se conectará a Microsoft SQL Server y, la otra, a Oracle.

Asimismo, puede crear la clase de prueba EmptySQLTestSuite derivada de SQLTestSuite para probar una base de datos de Microsoft SQL Server vacía. Para mejorar el rendimiento, puede invalidar determinados métodos de prueba que no se requieran para probar una base de datos vacía.

Si utiliza la herencia de clases de prueba, la ventana Vista de pruebas y el Editor de lista de pruebas muestran los métodos de prueba tanto en las clases base como en las clases secundarias. Para ver a qué clase pertenece una prueba, muestre las columnas Nombre de clase o Nombre completo de la clase en el explorador de lista de pruebas. Para obtener más información, consulte Cómo: Personalizar las vistas de las pruebas.

Probar métodos privados

Con pruebas unitarias, no sólo se pueden probar métodos públicos, sino también privados. Como con los métodos públicos, las pruebas unitarias para métodos privados se crean automáticamente al generar pruebas desde el código que se desea probar. Para obtener más información, consulte Cómo: Probar un método privado y Utilizar descriptores de acceso privados.

Tipos especiales de pruebas unitarias

En la tabla siguiente se muestra una lista de los tipos adicionales de pruebas unitarias:

Tipo de prueba unitaria

Descripción

pruebas unitarias controladas por datos

Una prueba controlada por datos es una prueba unitaria que se configura para que se la llame repetidamente para cada fila de un origen de datos. Los datos de cada fila están disponibles en cada ejecución sucesiva de la prueba como datos de entrada. Para obtener más información, consulte Información general de pruebas unitarias orientadas a datos.

ASP.NET pruebas unitarias

Las pruebas unitarias de ASP.NET se utilizan para ejecutar el código en una aplicación de ASP.NET a medida que responde a las solicitudes de página. Las pruebas unitarias de ASP.NET se ejecutan dentro de la aplicación ASP.NET probada. Para obtener más información, vea Información general sobre las pruebas unitarias de ASP.NET.

pruebas unitarias de Smart Device

Las pruebas unitarias de Smart Device son pruebas unitarias que se ejecutan bajo el proceso de host de Smart Device en un Smart Device o emulador. Para obtener más información, consulte Información general sobre pruebas unitarias de Smart Device.

Pruebas unitarias del servicio Web

Para obtener información acerca de las pruebas unitarias de servicio Web, vea Probar servicios Web.

Vea también

Conceptos

Estructura de las pruebas unitarias

Pruebas unitarias y C++

Trabajar con pruebas unitarias controladas por datos

Otros recursos

Trabajar con pruebas unitarias de ASP.NET

Trabajar con pruebas unitarias de Smart Device

Administrar pruebas

Ejecutar pruebas

Analizar los resultados de las pruebas