Le buone pratiche di programmazione consigliano di inserire delle asserzioni
nelle proprie classi, ma cosa succede quando poi testiamo il nostro
codice con NUNIT? Il problema è che al fallimento di una asserzione standard di
.NET la GUI del NUNIT mostra la classica messagebox di avvertimento e purtroppo
l'esecuzione si ferma fino a che l'utente non interviene premendo un
bottone.
La soluzione a questo problema è disabilitare i trace listener standard nel
web.config del progetto NUNIT.
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<clear/>
</listeners>
</trace>
</system.diagnostics>
In questo modo al fallimento di una asserzione i vostri test non
si interromperanno. Se volete comunque vedere le asserzioni fallite, è
possibile utilizzare l'oggetto ConsoleTraceListener in questo modo.
Public Class SharedObjects
Public Shared Listener As ConsoleTraceListener = New ConsoleTraceListener()
End Class
...
<TestFixture()> _
Public Class Class1
<SetUp()> Public Sub Init()
If (Not Trace.Listeners.Contains(SharedObjects.Listener)) Then
Trace.Listeners.Add(SharedObjects.Listener)
End If
End Sub
<Test()> _
Public Sub TEst()
Debug.Fail("FAILLLLLLLLLLLLLLL")
End Sub
End Class
In questo modo tutti i messaggi di trace standard del .NET, che comprendono
anche i messaggi generati dal fallimento delle asserzioni standard, verranno
ridirezionati nella console e sono quindi visibili nella GUI del nunit.
Purtroppo per ragioni a me sconosciute se si inserisce il ConsoleTraceListener dal web.config e non in maniera
programmatica non funziona, forse stasera sono stanco e sbaglio qualche
cosa.
Alk.
powered by IMHO 1.3