Excepciones con Test Unitarios en C#

Una kata, en el contexto de desarrollo de software, es un ejercicio de programación que nos permite, en un entorno controlado, probar nuevas técnicas y mejorar la calidad de nuestro código. Una de las maneras más interesantes de realizarlas es a través de la plataforma Solveet, que, en colaboración con la web 12meses12katas, proponen un ejercicio mensual.

En el ejercicio del pasado mes, descubrí que nunca había probado un método que devolviera una excepción, así que recurrí a lo primero que sabía, un bloque try catch, aunque el resultado deja bastante que desear:

[TestMethod]
public void TestMethodThatShouldReturnAnException()
{
  try
  {
    CodeMachine machine = CodeMachineBuilder.Generate("KKKKK");
    Assert.Fail();
  }
  catch (IncorrectCharactersException){}
}

Un bloque catch vacío es una de las cosas menos recomendadas desarrollando software, ya que se pueden capturar excepciones que no deseamos. Por suerte, Microsoft ha puesto a nuestra disposición el siguiente artículo: A Unit Testing Walkthrough with Visual Studio Team Test, que, aunque algo antiguo, nos propone otra manera de controlar las excepciones en un test unitario:

[TestMethod]
[ExpectedException(typeof(IncorrectCharactersException))]
public void
TestMethodThatShouldReturnAnException
()
{
 CodeMachine machine = CodeMachineBuilder.Generate("KKKK");
}

Con un atributo llamado ExpectedException y el tipo de excepción que esperamos, podemos mantener el código limpio y elegante, así, podemos seguir con nuestras pruebas.

2 pensamientos en “Excepciones con Test Unitarios en C#

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s