Desde que se
anunció Xamarin 2.0 testear nuestras aplicaciones Xamarin.iOS desde Visual
Studio ha sido más fácil que nunca, o al menos, no más difícil que cualquier
otra aplicación que desarrollemos con Visual Studio, esto es: usar nuestras
librerías de testing favoritas, nuestra librería de mocking de preferida y
sobre todo, nuestro runner de siempre.

Por norma general
testeamos el dominio de nuestra aplicación y por esta razón, podemos seguir
usando las herramientas que hemos usado siempre, pero la cosa cambia cuando
desarrollamos librerías inevitablemente acopladas a MonoTouch.dll, como puede
ser por ejemplo, un nuevo control de usuario.

Preparando el entorno

En primer lugar,
no es posible testear este tipo de librerías desde Windows. Solamente es
posible testearlas desde un dispositivo, es decir, nuestro runner se ejecuta
en el dispositivo. Por lo tanto, aunque podamos hacer un build, nuestros tests
en esta ocasión, serán dependientes de OSX.

Por otra parte,
dependeremos de NUnitLite para hacer nuestros Assert. NUnitLite (http://www.nunitlite.org/) es una librería
ligera de testing basada en NUnit. De hecho, si ya conoces NUnit, sabrás
trabajar con NUnitLite porque básicamente, es un subset de NUnit. Si no lo
conoces, es muy parecido a MSTest.

Afortunadamente,
Xamarin nos proporciona un tipo de proyecto que tiene este Target, desde
Xamarin Studio -> Nuestra solución -> Añadir proyecto -> iOS Unit
Tests Project. Y lo único que deberemos hacer es ir creando nuestras clases de
tests y, en tiempo de ejecución, el runner descubrirá nuestros tests.

Testeando:

Crearemos una
clase de test simple con unos cuantos tests para ver el funcionamiento del
runner. De hecho, nuevamente Xamarin Studio nos proporciona una plantilla:

[TestFixture]

                public
class FooTest

                {

                                [Test]

                                public
void Pass ()

                                {

                                                Assert.True
(true);

                                }

 

                                [Test]

                                public
void Fail ()

                                {

                                                Assert.False
(true);

                                }

 

                                [Test]

                                [Ignore
(“another time”)]

                                public
void Ignore ()

                                {

                                                Assert.True
(false);

                                }

                }


Como podéis ver la sintaxis es exactamente la misma que la de NUnit.
Finalmente, ejecutamos nuestro proyecto en el emulador (o nuestro dispositivo)
y podremos ejecutar nuestros tests.