jueves, 20 de marzo de 2008

Cómo ejecutar nuestros tests con MbUnit

A continuación les dejo las tres formas de ejecutar nuestros Test con MBUnit:

  • Mediante consola: Dentro de los archivos instalados por MbUnit se encuentra la aplicación de consola MbUnit.Cons.exe. Un ejemplo de cómo usarlo se encuentra aqui.
  • Via aplicación de Windows: Junto con la aplicación de consola, se encuentra una aplicación de Windows llamada MbUnit.GUI.exe. Para mas información de cómo utilizarla ver el siguiente post.
  • TestDriven.Net: Add-in que se integra con Visual Studio y el cual te permite ejecutar tus test dentro tu entorno de desarrollo. Esto sin necesidad de usar ninguna de las dos primeras opciones. Para más información ver mi post anterior.

Saludos,

sábado, 15 de marzo de 2008

Usando MbUnit y TestDriven.Net.

En el post anterior le he mostrado como ejecutar nuestras pruebas de unidad utilizando el programa de consola distribuido con MbUnit, y aunque es una opción valida para ejecutar nuestros tests, existen otras maneras de hacerlo.

A continuación mostraré como usar TestDriven.Net para ejecutar nuestras pruebas. Para el poder llevar a cabo este ejemplo es necesario instalar:

Una vez instalado los prerrequisitos, crearemos un ejemplo para ver como trabaja TestDriven.

Lo primero será crear un proyecto del tipo biblioteca de clases. Luego de esto agregaremos la referencia de MbUnit a nuestro proyecto.

Para nuestro ejemplo he creado un ejemplo que no tiene ningún tipo de “lógica”, y solo fue hecho para fines didácticos. El proyecto esta compuesto de dos clases una llamada datamanager, que esta compuesta por una única función que devuelve un objeto del tipo datatable, y otra clase llamada
DataManagerTest, la cual contiene un metodo GetDataTableTest que realiza una assert sobre la funcion GetDataTable de la primera clase.



segunda clase....



Luego de hacer los pasos antes comentados ya es hora de correr nuestros tests J. Lo único que deben hacer click derecho sobre nuestra clase DataManagerTest y elegir la opción “Run Test(s)”.


Cuando se ejecute nuestros tests, ustedes podrán ver la salida o el resultado de la ejecución en la ventana “output” de Visual Studio.


Como resumen, entrego lo que he hecho en este post:

  • Instalar Mbunit
  • Instalar TestDriven
  • Crear proyecto del tipo biblioteca de clases
  • Agregar referencia de Mbunit a nuestro proyecto
  • Correr nuestros test usando TestDriven

Como ven, el uso de estas herramientas es bastante sencillo! Ahora solo deben usarlas!!


lunes, 10 de marzo de 2008

Introducción a Mbunit

Al intentar buscar material en español de mbunit no he logrado encontrar mucha información relacionada con el tema y es por esto que he querido hacer este post. La mayor parte de lo escrito lo obtuve del sitio oficial de este sitio.

Mbunit, es un framework de pruebas de unidad escrito originalmente por Jonathan 'Peli' de Halleux y liderado actualmente por Jeff Brown

Desde sus comienzos este proyecto ha implementado todas las características que Nunit y csUnit, pero con la extensibilidad que ellos no tienen.

Bien, una vez dada una pequeña introducción, continuare con un ejemplo muy simple de lo que podemos hacer mbunit.

La instalación

Antes de empezar deberías tener instalado lo siguiente en tu computador:

  • Framework .Net en sus sabores 1.1 o 2.0 (la versión 2008 aun no la tengo instalada, asi que no puedo hacer comentarios si mbunit trabaja o no sobre esta ultima versión del framework)
  • La actual versión de Mbunit, la cual puedes descargar desde su sitio.
  • TestDriven. Este es un complemento a Visual Studio que aunque no es necesario, es realmente útil para poder correr nuestras pruebas de unidad dentro del Visual Studio.

Y? ya los instalaste?. Bueno, ahora prosigamos.

Escribiendo nuestros primeros tests


Tal cual como dice el el manual de mbunit: escribir test no es para nada complicado es un simple grupo de Fixtures, tests y asserts.

  • Assert: Corresponde a una comprobación. Por ejemplo, comprobar que un valor es verdadero, que un número es mayor que otro, que un objeto es nulo, etc.
  • Un Test: Es una colección de assert que intentar comprobar que una seria de acciones de tu código de producción están correctas o hacen lo que esperas.
  • Un Fixture es una colección de tests que por lo general están relacionados en una única clase.

Dentro de Mbunit exiten mas términos que poco a poco iré comentando, pero por el momento solo utilizare lo que arriba describí.

Entonces para comenzar escribiré algunos tests para la una típica clases que ustedes ya conocen, la pila.

Public Class Stack

Private elements As New ArrayList

Public ReadOnly Property IsEmpty() As Boolean

Get

Return (elements.Count = 0)

End Get

End Property

Public Sub Push(ByVal element As Object)

elements.Insert(0, element)

End Sub

Public Function Pop() As Object

Dim topelement As Object = Top()

elements.RemoveAt(0)

Return topelement

End Function

Public Function Top() As Object

If IsEmpty Then

Throw New InvalidOperationException("Stack is Empty")

End If

Return elements(0)

End Function

End Class

y justo con la pila esta su compañero inseparable la StackTest

Imports MbUnit.Framework

Imports MiLibreria

_

Public Class StackTest

_

Public Sub IsEmptyTest()

Dim myStack As New Stack

Assert.IsTrue(myStack.IsEmpty)

End Sub

_

Public Sub PushTest()

Dim myStack As New Stack

Assert.IsTrue(myStack.IsEmpty)

myStack.Push(New Object)

myStack.Push(New Object)

Assert.IsFalse(myStack.IsEmpty)

End Sub

_

Public Sub PopTest()

Dim myStack As New Stack

Assert.IsTrue(myStack.IsEmpty)

myStack.Push(New Object)

myStack.Pop()

Assert.IsTrue(myStack.IsEmpty)

End Sub

_

Public Sub Top()

Dim myStack As New Stack

Assert.IsTrue(myStack.IsEmpty)

myStack.Push(New Object)

myStack.Pop()

Assert.IsTrue(myStack.IsEmpty)

End Sub

End Class


Creo que no hay necesidad de explicar el código de la clase stack, pero si lo es para la clase stacktest. Básicamente esta clase contiene 4 métodos, donde cada uno de ellos prueba o revisa un método en particular de la clase stack (push, pop, isempty, top) . Como pueden ver en la clase cada método es etiquetado con , lo cual le permite saber a Mbunit que aquel es un método de test por lo cual debe ejecutar el código que se encuentra en su interior.

Junto con la etiqueta , podemos ver la etiqueta , con la cual indicamos a Mbunit que esta clase es una clase de test. En Mbunit, existen muchas etiquetas, pero para simplificar este ejemplo, he querido utilizar las etiquetas básicas del mismo.

Y...¿Como configuras tu solución?

Para este post, he creado una solución con 3 proyectos, donde el proyecto de test contiene una referencia al proyecto donde se encuentra el clase stack junto con una referencia a MbUnit.Framework.dll ( que para mi instalación quedo en C:\Archivos de programa\MbUnit).Las referencias quedan como ves en la próxima imagen.

Y... ¿Como puedes ver como corren los tests?

Respuesta: Facil, para poder lograr esto tienes tres opciones: correr un tests en una consola, una interfaz grafica que te entrega Mbunit y por ultimo, pero no menos importante, con TestDriven.

Para el caso de nuestro ejemplo, lo ejecutaremos por medio de la consola (utilizando el comando MBunit.Cons.exe TestsMilibreria.dll )

Bueno, eso ha sido todo por hoy :D. Espero postear muchas otras cosas de Mbunit.

Presentación

Antes de decir cualquier cosa....

Hola a todos los lectores de este blog, mi nombre es Rolando Martínez y soy alumno tesista de la Carrera de Ingeniería en Computación de la Universidad Austral de Chile. Actualmente me desempeño como desarrollador en una empresa noruega con sede en Chile llamada Mercatus.

Uno de mis objetivos en este blog, es postear todo lo relacionado con desarrollo de software, y principalmente temas que solo han sido abordado en ingles, pero no español (o muy poco)


Saludos,

Rolando.