Pruebas Unitarias en Visual Studio Professional

El concepto de las pruebas unitarias ha venido desarrollando todo un nuevo modelo de programación, los modelos basados en pruebas (TDD por Test Driven Development) han demostrado sus beneficios entre los que se pueden contar rápidamente la confianza en el código generado, la habilidad de hacer refactoring mucho más rápido y con más confianza y la reducción en los tiempos de depuración.


Visual Studio Professional versión 2005 es una de las herramientas de desarrollo más usadas en el mundo, y la herramienta preferida de los desarrolladores sobre plataforma Microsoft, sin embargo los equipos de desarrollo que no utilizan Visual Studio Team System versión Developer o Tester no tienen la posibilidad de realizar pruebas unitarias Out-Of-The-Box, esta guía ayudar a configurar Visual Studio Professional para la ejecución de pruebas unitarias.


1. Preparando el Ambiente.

Lo primero es descargar un framework de pruebas unitarias, aunque existen varios recomiendo el uso de NUnit, en nuestras pruebas ha funcionado bastante bien, tiene funcionalidad consistente y es fácil de configurar y usar. Descárguelo e instálelo del siguiente link: (Para el Framework de NUnit (.NET)) http://www.nunit.org/

Instalando nUnit podrá escribir, ejecutar y tener resultados de pruebas unitarias, pero aún desde fuera de Visual Studio, Para la integracion con el IDE de Visual Studio deberá instalar un Add-in que puede descargar de esta dirección: http://www.testdriven.net/, esto permitirá la ejecución de pruebas unitarias, con depuración, cobertura (coverage) y otras características desde el propio entorno del IDE de Visual Studio.


2. Escribiendo el Código de Pruebas.

Con el entorno listo podemos crear el proyecto de Pruebas para nuestro ensamblado, yo recomiendo crear otro proyecto para poder tener clara independencia entre el proyecto de código y el proyecto de pruebas, una ventaja adicional de hacerlo de esta forma es que puede subir el proyecto de pruebas a su sistema de control de versiones. (Una recomendación adicional tiene que ver con la nomenclatura del namespace, cree un namespace de pruebas para su proyecto).

En el nuevo proyecto creado debe agregarse una referencia al ensamblado nunit.framework.dll que encontrará en la carpeta nUnit 2.4/Bin, en la ubicación de archivos de programas o donde haya instalado el framework del nUnit.

También debe agregar una referencia al proyecto o ensamblado que quiere probarse.

Ahora puede escribir una clase de pruebas unitarias que se parecerá a esta:


Imports NUnit.Framework
Imports TestClass = NUnit.Framework.TestFixtureAttribute
Imports TestMethod = NUnit.Framework.TestAttribute
Imports TestInitialize = NUnit.Framework.SetUpAttribute
Imports TestCleanup = NUnit.Framework.TearDownAttribute

<TestClass()> _
Public Class eMailTest

end Class.


Como puede verse aquí, se han usado unos alias para los atributos del framework que facilitan su uso en la clase, estos alias le permitirán al framework de nunit identificar la clase de pruebas, los métodos de pruebas, los métodos de inicialización y finalización del proceso de pruebas.

Estos alias permitirán decorar la clase como en el ejemplo anterior que la clase ha sido decorada con el atributo TestClass

Lista la clase, ahora podemos construir métodos de pruebas, un método básico de pruebas quedaría parecido a este:

<TestMethod()> _
Sub AddFolderTest()

…Su Código aqui.

End Sub

Ahora con el botón derecho del mouse sobre el método o la clase de pruebas puede ejecutar la prueba unitaria.

Ahora bien la idea de esta pequeña guía no es reproducir todo el manual de nunit pero hay algunos tips que pueden ser interesantes, 1. Use las funciones assert dentro de sus métodos de pruebas, 2. en los casos en que la prueba debe retornar una excepción utilice la decoración expectedexception para indicarle a nunit cual es el tipo de excepción que espera, 3. Puede configurar el ambiente de pruebas usando un método decorado como TestInicialize y limpiar todo usando TestCleanup.

En próximos artículos hablaré de 1. Como usar BD para ejecutar conjuntos de pruebas automaticos simulando la funcionalidad de Visual Studio Team System y 2. cómo crear un modelo de pruebas usando Enterprise Services que al finalizar las pruebas realice un rollback de todos los datos de pruebas insertados.

Espero que sea de utilidad.

Juan Carlos Peláez

MCTS

Keywords: Visual Studio Team System, Visual Studio Proffesional 2005, nUnit, Mejores Practicas, Metodología, Microsoft, VB, Pruebas Unitarias, Desarrollo basado en Pruebas, Eventos Microsoft Colombia.