Sto usando xUnit con il runner di prova ReSharper e il plug-in del plug-in xUnitContrib.Utilizzo di ReSharper, come visualizzare l'output di debug durante un test unitario di lunga durata?
Quando si esegue un test di lunga durata, mi piacerebbe essere in grado di fornire un indicatore di avanzamento alla finestra di output dell'unità di test.
Ho provato Debug.WriteLines
, Trace.WriteLine
e Console.WriteLine
. Tutti hanno lo stesso comportamento: nulla viene mostrato nella finestra di output fino al completamento del test.
Ad esempio:
[Fact]
public void Test()
{
Debug.WriteLine("A");
Trace.WriteLine("B");
Console.WriteLine("C");
Thread.Sleep(10000);
}
Il test mostra alcuna uscita finché i 10 secondi trascorsi e la prova completa. Come ottengo l'output lungo la strada?
UPDATE 1
Ho provato anche con MSTest e NUnit. NUnit è l'unico che mostra l'output lungo la strada.
MSTest e XUnit non restituiscono alcun output fino al completamento del test. La parte strana è che, mentre l'uscita di test xUnit e NUnit si presenta così:
A
B
C
L'uscita MSTest assomiglia a questo:
C
Debug Trace:
A
B
Dato tutte queste variazioni, credo che la risposta è che è fino all'implementazione del runner di prova per decidere come e quando produrre. Qualcuno sa se è possibile configurare XUnit test runner?
UPDATE 2
Penso che questo deve essere un deficit di xUnitContrib. Inserito nel loro CodePlex issue tracker.
Debug.WriteLine() funziona perfettamente bene per me quando sono in modalità di debug. Quindi se vuoi accedere in generale, ti consiglio la risposta di brenton – derape
@derape - No, non funziona con xunit. Nessun output appare fino al completamento del test. –
Vedo, non ho giocato con XUnit - solo NUnit. E la registrazione NUnit funziona lungo i thread di debug ... – brenton