En este tema se describe el proceso paso a paso de crear la prueba de unidad más sencilla en Microsoft Visual Studio 2010 (C#) para la aplicación de consola. Con este ejemplo, puede aprender a crear sus propias pruebas unitarias. El ejemplo también muestra cómo usar la clase Assert para realizar pruebas.
Contenido
- Tarea
- Instrucciones
- 1. Cree una aplicación con la plantilla de aplicación de consola
- 2. Preparación del texto del Programa.módulo cs
- 2.1. Añadiendo la función Min ()
- 2.2. Hacer pública la clase del Programa
- 3. Listado del programa bajo prueba
- 4. Creación de una prueba
- 4.1. Adición de un nuevo proyecto a la solución
- 4.2. Estructura de la solución
- 4.3. Código de programa de » UnitTest1.archivo cs». Atributos y
- 4.4. Hacer cambios en las unidades de texto1.módulo cs. Cambio del nombre del método de ensayo
- 4.5. Conexión del proyecto MinApp al proyecto TestMinApp
- 4.6. Modificación de las UnidAdes1.texto del módulo cs
- 4.6.1. Añadir el espacio de nombres de MinApp a UnitTest1.cs
- 4.6.2. Texto del método TestMin()
- 4.7. El texto de la Unidad1.módulo cs
- 5. Ejecute la prueba y verifique el resultado de la prueba
- 6. Resultado. Interacción entre proyectos
- Temas relacionados
Buscar en otros sitios web:
Tarea
Para una aplicación de tipo de consola, desarrolle una prueba de unidad que pruebe la función Min (). Para la función Min (), establezca el método de prueba TestMin (). Pruebe el resultado de las funciones.
Instrucciones
1. Cree una aplicación con la plantilla de aplicación de consola
Ejecute MS Visual Studio 2010. Para crear un proyecto con la plantilla de aplicación de consola, debe llamar a la siguiente secuencia de comandos:
File -> New -> Project...
Como resultado, se abre la ventana Nuevo proyecto. En la ventana, seleccione la plantilla «Aplicación de consola» como se muestra en la Figura 1. La plantilla se selecciona en la pestaña Visual C#.
Gráfico 1 La ventana «Nuevo proyecto». Seleccionar la «Aplicación de consola»
⇑
2. Preparación del texto del Programa.módulo cs
2.1. Al agregar la función Min ()
En el cuerpo de la clase Program, debe agregar el texto de la función Min (). La función se declara como pública y estática. El texto de la función Min ()
Gráfico 2 La ventana de MS Visual Studio, el módulo «Programa».cs»
⇑
2.2. Hacer pública la clase de programa
Para acceder a la función Min() de la clase de programa, necesita hacer pública esta clase. Para hacer esto, antes de la declaración de clase, debe establecer la palabra clave pública.
...namespace MinApp{ public class Program { // методы класса // ... }}...
Después de eso, el programa probado está listo.
⇑
3. Listado del programa bajo prueba
En este momento el código del programa bajo prueba es el siguiente:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MinApp{ public class Program { public static int Min(int a, int b, int c) { int min = a; if (min > b) min = b; if (min > c) min = c; return min; } static void Main(string args) { Console.WriteLine("Demo of Unit-testing in C#."); } }}
Debido a que este programa se probará desde otro módulo de pruebas, entonces en la función Main (), no necesita escribir nada más. Dado que, de acuerdo con la condición de la tarea, debe probar el funcionamiento de la función Min (). Y esto ya se hará desde el módulo de pruebas. Por el momento, nuestro programa está listo para pruebas.
⇑
4. Creación de una prueba
La prueba se crea en un proyecto independiente de la Solución. El programa que está probando no lo sabe. El programa de prueba que pondrá a prueba llama a las funciones del programa que se está probando. En nuestro caso, el programa de prueba llamará a la función
int Min(int, int, int);
⇑
4.1. Adición de un nuevo proyecto a la solución
Para esta solución, se agrega un nuevo proyecto con el comando
File->Add->New Project...
La ventana para crear un nuevo proyecto se muestra en la Figura 3.
Figura 3. La ventana para crear un proyecto de tipo Proyecto de prueba
En la ventana debe seleccionar el grupo de plantillas
Visual C# -> Test
De las plantillas mostradas, se selecciona la plantilla de proyecto «Proyecto de prueba». El campo «Nombre» indica el nombre del proyecto que probará nuestro programa. Debe configurar, por ejemplo, TestMinApp. El proyecto se encuentra en una carpeta separada «E:\Test\MinApp».
Figura 4. La » Unidad1.archivo cs». La ventana del Explorador de soluciones con los proyectos TestMinApp y MinApp mostrados
⇑
4.2. Estructura de la solución
Como puede ver en la Figura 4, el Explorador de soluciones muestra la estructura de elementos de la solución, que contiene dos proyectos:
- el proyecto MinApp. Este es un proyecto creado usando la plantilla «Aplicación de consola» con la función Min() a probar;
- el proyecto TestMinApp. Este proyecto está diseñado para probar las funciones del proyecto MinApp. El código de programa que prueba la función Min() se agregará al archivo de proyecto UnitTest1 del proyecto TestMinApp.
Ambos proyectos pueden ejecutarse de forma independiente.
⇑
4.3. Código de programa de » UnitTest1.archivo cs». Atributos y
En el proyecto TestMinApp, el UnitTest1.el archivo de prueba cs es de interés primario. Este archivo contiene métodos que probarán las funciones del proyecto MinApp. El proyecto TestMinApp puede contener cualquier número de archivos que contengan pruebas (por ejemplo, UnitTest2.cs, Unidad3.cs, etc.).
Código de programa de » UnitTest1.el archivo cs», generado por MS Visual Studio 2010, es el siguiente:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { public UnitTest1() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // // public void MyTestCleanup() { } // #endregion public void TestMethod1() { // // TODO: Add test logic here // } }}
Como puede ver en el código anterior, el archivo contiene una clase llamada UnitTest1. La clase involucra un método público llamado TestMethod1 ().Antes de implementar el método TestMethod1 (), se coloca el atributo. Esto significa que en el cuerpo del método necesita escribir código que probará las funciones del proyecto MinApp.
En la clase, puede ingresar cualquier número de métodos que probarán diferentes funciones de diferentes módulos. Lo principal es que estos métodos se notaron por el atributo .
⇑
4.4. Hacer cambios en las unidades de texto1.módulo cs. Cambiar el nombre del método de prueba
Puede cambiar los nombres de los métodos y agregar nuevos métodos que estén marcados con el atributo en la Unidad1.módulo cs. Con esto en mente, en UnidAdes1.cs, el método TestMethod1() debe renombrarse a TestMin().
Después de realizar los cambios, el texto abreviado de UnitTest1.el módulo de archivos cs se verá como:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { ... public void TestMin() { // // TODO: Add test logic here // } }}
⇑
4.5. Conexión del proyecto MinApp al proyecto TestMinApp
Para acceder a la función Min () (el proyecto MinApp) desde el proyecto TestMinApp, debe montar el espacio de nombres en el que se declara esta función.
Para hacer esto, primero debe llamar al menú contextual del proyecto TestMinApp. Luego, en el menú contextual, debe llamar al comando «Agregar referencia Add» (Figura 5).
Figura 5. El comando «Agregar referencia
Como resultado, se abre la ventana «Agregar referencia», en la que selecciona el proyecto de MinApp.
Figura 6. La ventana «Añadir referencia». Conexión del proyecto MinApp
Después de las acciones realizadas, las funciones del proyecto MinApp estarán disponibles para su uso en el proyecto TestMinApp.
Figura 7. La pestaña «Referencias» con el proyecto de MinApp conectado
⇑
4.6. Modificación de las UnidAdes1.texto del módulo cs
4.6.1. Añadir el espacio de nombres de MinApp a UnitTest1.cs
En este paso, debe agregar el espacio de nombres de MinApp a UnitTest1.cs que utiliza la directiva «usar»:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using MinApp;namespace TestMinApp{ ...}
⇑
4.6.2. Texto del método TestMin ()
En el texto del método TestMin (), debe ingresar el siguiente código:
...public void TestMin(){ // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(2, min);}...
⇑
4.7. El texto de la Unidad1.módulo cs
El texto de todas las unidades 1.el módulo cs es el siguiente:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using MinApp;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { public UnitTest1() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // // public void MyTestCleanup() { } // #endregion public void TestMin() { // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(2, min); } }}
⇑
5. Ejecute la prueba y compruebe el resultado de la prueba
En Microsoft Visual Studio 2010 para las pruebas unitarias, se implementa un menú especial «Prueba».
Para ejecutar la prueba, debe seleccionar uno de los comandos
Test -> Run -> Tests in Current Context
o
Test -> Run -> All Tests in Solution
como se muestra en la Figura 8.
Figura 8. Llamar al comando de prueba y ver el resultado
Después de iniciar la prueba, el resultado se puede ver a la izquierda en la ventana del Explorador de pruebas. Como se puede ver en la Figura 8, la prueba no se supera. Esto es lógico, porque en la función Assert.AreEqual() comparamos los números 2 y 3, que son diferentes. Aquí se introduce especialmente el número 2 en lugar del número 3.
Si en lugar del número 2 introduce la respuesta correcta, el número 3 (mínimo entre 3, 4, 5), se enviará la prueba (Figura 9). En este caso, el texto del método TestMin() será el siguiente:
...public void TestMin(){ // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(3, min);}...
La ventana de resultados se muestra en la Figura 9.
Figura 9. Resultado de la prueba para el caso cuando ingresa la respuesta correcta
Ahora podemos concluir que la función Min () funciona correctamente para este caso.
⇑
6. Resultado. Interacción entre proyectos
En esta tarea, la solución involucra dos proyectos. Un proyecto de MinApp contiene la función Min () a probar. El segundo proyecto TestMinApp contiene métodos de prueba. En Microsoft Visual Studio 2010, cada uno de los proyectos se ejecuta mediante varios comandos de menú. Por lo tanto, el proyecto de MinApp se ejecuta de la manera estándar desde el menú Ejecutar. Y el proyecto TestMinApp se lanza desde un menú especial de «Prueba».