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.