Esta nota viene a cerrar una serie de tres posts anteriores
TDD… y las cosas, felizmente, no volvieron a ser las mismas…,
En este caso, a pedido de Luis Petek en un comentario al tercer post de la serie, explico algunos otros atributos de NUnit que podrían ser de utilidad.
Así como la rutina que esté marcada por el atributo <Setup> se ejecuta antes de cada uno de los Tests, existe una forma de marcar otra rutina para que se ejecute después de cada uno de los Test.
Este atributo es <TearDown>.
En el ejemplo que venimos siguiendo, vamos a desdoblar la declaración de la variable configurationAppSettings de su instancia, sólo con el fin de darle sentido al ejemplo.
Dejo la declaración donde está y su instancia pasa al setup.
C#
using NUnit.Core;
using NUnit.Framework;
[TestFixture()]
public class Class1
{
public System.Configuration.AppSettingsReader configurationAppSettings;
public string sKeyClave;
[SetUp()]
public void Setup()
{
configurationAppSettings = new System.Configuration.AppSettingsReader();
sKeyClave = (string)(configurationAppSettings.GetValue(“Clave”, typeof(string)));
}
[Test()]
public void Prueba()
{
Assert.IsNotNull(sKeyClave);
}
[TearDown]
public void Dispose()
{
configurationAppSettings = null;
}
}
VB
Imports NUnit.Core
Imports NUnit.Framework
<TestFixture()> _
Public Class Class1
Public configurationAppSettings As System.Configuration.AppSettingsReader
Public sKeyClave As String
<SetUp()> _
Public Sub Setup()
configurationAppSettings = New System.Configuration.AppSettingsReader
sKeyClave = CType(configurationAppSettings.GetValue(“Clave”, GetType(System.String)), String)
End Sub
<Test()> _
Public Sub Prueba()
Assert.IsNotNull(sKeyClave)
End Sub
<TearDown()> _
Public Sub Dispose()
configurationAppSettings = Nothing
End Sub
End Class
Compilamos y ejecutamos un Testing:

¡Verde!…
Podemos continuar.
Cabe aclarar que, del mismo modo que con <Setup>, no puede haber más que un <TearDown> por TestFixture.
Existe también una forma de verificar la generación de una excepción, para nuestro ejemplo voy a plantear el caso de intentar recuperar una clave inexistente de app.config:
C#
using NUnit.Core;
using NUnit.Framework;
[TestFixture()]
public class Class1
{
public System.Configuration.AppSettingsReader configurationAppSettings;
public string sKeyClave;
[SetUp()]
public void Setup()
{
configurationAppSettings = new System.Configuration.AppSettingsReader();
sKeyClave = (string)(configurationAppSettings.GetValue(“Clave”, typeof(string)));
}
[Test()]
public void VerificarClave()
{
Assert.IsNotNull(sKeyClave);
}
[Test]
[ExpectedException(typeof(System.InvalidOperationException))]
public void EsperaUnaExcepcion()
{
sKeyClave = (string)(configurationAppSettings.GetValue(“NoExiste”, typeof(string)));
Assert.IsNull(sKeyClave);
}
[TearDown]
public void Dispose()
{
configurationAppSettings = null;
}
}
VB
Imports NUnit.Core
Imports NUnit.Framework
<TestFixture()> _
Public Class Class1
Public configurationAppSettings As System.Configuration.AppSettingsReader
Public sKeyClave As String
<SetUp()> _
Public Sub Setup()
configurationAppSettings = New System.Configuration.AppSettingsReader
sKeyClave = CType(configurationAppSettings.GetValue(“Clave”, GetType(System.String)), String)
End Sub
<Test()> _
Public Sub VerificarClave()
Assert.IsNotNull(sKeyClave)
End Sub
<Test(), ExpectedException(GetType(System.InvalidOperationException))> _
Public Sub EsperaUnaExcepcion()
sKeyClave = CType(configurationAppSettings.GetValue(“NoExiste”, GetType(System.String)), String)
Assert.IsNull(sKeyClave)
End Sub
<TearDown()> _
Public Sub Dispose()
configurationAppSettings = Nothing
End Sub
End Class
Además le modifiqué el nombre Prueba por VerificarClave para mayor claridad.
Compilemos y ejecutemos el Test:

¡Verde!…
Podemos ver que en EsperaUnaExcepcion el Test es exitoso cuando se produce la excepción, esto es porque al intentar recuperar la clave NoExiste de app.config se produce la excepción.
Si quieren verificar, cambien el string NoExiste por Clave, que si existe en app.config, y podrán ver que el Test EsperaUnaExcepcion falla.
Existen más atributos de NUnit, les recomiendo que lean la documentación, aquí tienen la lista completa de atributos y en este otro link pueden acceder a la documentación en general de NUnit para todas sus versiones.
Ojalá les sea útil y espero sus comentarios. ![]()






























