2009-01-30 13 views
14

Sé que Visual Studio ofrece algunas golosinas de Prueba Unitaria. ¿Cómo los uso? ¿Cómo los uso? ¿Qué debería saber sobre las pruebas unitarias (supongamos que no sé nada)?Comenzando con las Pruebas Unitarias en C# con Visual Studio

This question es similar pero no trata lo que Visual Studio puede hacer, por favor no marque esto como un duplicado debido a eso. Publicado como Wiki de la comunidad porque no estoy tratando de ser una prostituta representante.

Respuesta

2

La estructura de prueba de unidad en VS es similar a NUnit en su uso. Una característica interesante (y útil) de ella difiere significativamente de NUnit. La prueba de unidad VS se puede usar con código que no se escribió teniendo en cuenta las pruebas unitarias.

Puede construir un marco de prueba unitario después de escribir una aplicación porque la estructura de prueba le permite hacer llamadas de método de referencia externas y usar código de aceleración y desmontaje para preparar el entorno de prueba. Por ejemplo: si tiene un método dentro de una clase que utiliza recursos que son externos al método, puede crearlos en la clase de aceleración (que VS crea para usted) y luego probarlos en la clase de prueba de la unidad (también creada para ti por VS). Cuando finalice la prueba, la clase de desmontaje (una vez más ... proporcionada por VS) liberará recursos y limpiará. Todo este proceso existe fuera de su aplicación, por lo tanto, no interfiere con la base del código.

El marco de prueba de la unidad VS es realmente muy bien implementado y fácil de usar. Lo mejor de todo es que puedes usarlo con una aplicación que no fue diseñada con las pruebas unitarias en mente (algo que no es fácil con NUnit).

+0

cuidado para vincular/explicar NUnit? – Malfist

+0

¿Por qué no es fácil hacerlo en NUnit? NUnit proporciona la misma capacidad para realizar la configuración/desmontaje de la prueba. Puede usar NUnit para el código de prueba unitaria que no fue escrito con las pruebas unitarias en mente también. –

+0

Quizás entendí mal cómo funciona NUnit, pero pensé que tenía que colocar declaraciones declarivas con el código que está probando para que NUnit sepa dónde encontrar los sujetos de prueba. Con el marco de prueba integrado en VS, esto no es necesario. Aunque podría estar equivocado sobre NUnit. :) – Eric

2

Lo primero que haría es descargar una copia de TestDriven.Net para usar como corredor de prueba. Esto agregará un menú de clic derecho que le permitirá ejecutar pruebas individuales al hacer clic con el botón derecho en el método de prueba y seleccionar Ejecutar prueba (s). Esto también funciona para todas las pruebas en una clase (clic derecho en clase, pero fuera de un método), un espacio de nombres (haga clic derecho en el proyecto o en el espacio de nombres fuera de una clase) o una solución completa (haga clic derecho en la solución). También agrega la capacidad de ejecutar pruebas con cobertura (built-in o nCover) o el depurador desde el mismo menú contextual.

En cuanto a la configuración de pruebas, generalmente me quedo con el proyecto de prueba por proyecto y una clase de prueba por clase bajo prueba. A veces crearé clases de prueba para aspectos que se ejecutan en muchas clases, pero no por lo general. La forma típica en que los creo es crear primero el esqueleto de la clase, sin propiedades, sin constructor, pero con el primer método que deseo probar. Este método simplemente arroja una NotImplementedException.

Una vez creado el esqueleto de clase, utilizo el botón derecho Crear pruebas unitarias en el método bajo prueba. Esto abre un cuadro de diálogo que le permite crear un nuevo proyecto de prueba o seleccionar uno existente. Creo, y nombre apropiadamente, un nuevo proyecto de prueba y hago que el asistente cree las clases. Una vez hecho esto, es posible que también desee crear las funciones de acceso privado para la clase en el proyecto de prueba. A veces, estos deben actualizarse (recrearse) si su clase cambia sustancialmente.

Ahora tiene un proyecto de prueba y su primera prueba. Comience por modificar la prueba para definir un comportamiento deseado del método. Escribe suficiente código para (apenas) pasar la prueba. continuar con la escritura de pruebas/códigos de escritura, especificando más comportamiento para el método hasta que se defina todo el comportamiento para el método. Luego avance al siguiente método o clase según corresponda hasta que tenga suficiente código para completar la función en la que está trabajando.

Puede agregar más y diferentes tipos de pruebas según sea necesario. También puede configurar su control de código fuente para exigir que algunas o todas las pruebas pasen antes de registrarse.

+0

¿Por qué usar TestDriven.Net? Eso no responde en absoluto a la pregunta (que se trataba de usar las herramientas de prueba incorporadas). –

+0

Aún está utilizando el marco de prueba de Microsoft, pero solo usa el corrector de prueba de TestDriven.Net. Lo prefiero, ya que es más conveniente ejecutar las pruebas directamente desde el código. – tvanfosson

5

La diferencia más significativa es que el soporte MSTest está integrado en Visual Studio y proporciona pruebas unitarias, cobertura de código y soporte de burla directamente. Para hacer los mismos tipos de cosas en los marcos de pruebas de unidades externas (de terceros) generalmente se requieren marcos múltiples (un marco de prueba de unidades y un marco de burla) y otras herramientas para realizar análisis de cobertura de códigos.

La manera más fácil de usar las herramientas de prueba de la unidad MSTest es abrir el archivo para el que desea crear pruebas unitarias, haga clic derecho en la ventana del editor y seleccione el menú "Crear pruebas unitarias ...". Prefiero poner mis pruebas unitarias en un proyecto separado, pero eso es solo una perferencia personal. Hacer esto creará una especie de clase de prueba "plantilla", que contendrá métodos de prueba que le permitirán probar cada una de las funciones y propiedades de su clase. En ese momento, debe determinar lo que significa que la prueba pase o falle (en otras palabras, determine lo que debería suceder dado un cierto conjunto de entradas).

En general, se termina pruebas de escritura que se parecen a esto:

string stringVal = "This"; 
Assert.IsTrue(stringVal.Length == 4); 

Esto dice que para el varaible llamado stringVal, la propiedad La longitud debe ser igual a 4 después de la asignación.

Los recursos enumerados en el otro subproceso deberían proporcionar un buen punto de partida para comprender qué pruebas unitarias son en general.

+0

Sé (creo) que MS compró TypeMock, pero entendí que todavía era un complemento. Tengo la edición Team Suite y no tengo un marco de burla incorporado. Yo uso RhinoMocks para burlarse. – tvanfosson

+0

@tvanfosson tal vez no se burle realmente entonces. Me refería a la capacidad de crear objetos de "acceso privado" para permitirle probar métodos privados e internos. –

Cuestiones relacionadas