Avere i risultati del test del report della console Nunit durante la corsa del test, dopo ogni test

StackOverflow https://stackoverflow.com//questions/22070217

  •  23-12-2019
  •  | 
  •  

Domanda

Esegendo la console Nunit sul mio assemblaggio del test ma a volte il mio Nunit si blocca (attualmente sto capitando perché).Quando Nunit si schianta non viene creato alcun report XML e vengo efficacemente senza alcun rapporto di prova.La corsa del test è molto lunga ed è una brutta situazione se perdo l'intero rapporto di prova. C'è un modo per dirlo a NUIT di scrivere il file di registro XML come va (dopo ogni test).Anche se ciò significa che il file XML non verrà chiuso correttamente. So che è possibile utilizzare Nunit TestListener.Ma c'è un interruttore o qualcosa che non include la scrittura di codice extra da solo.

È stato utile?

Soluzione

È possibile invocare nunit-console con l'interruttore della riga di comando /labels.Ciò lo farà scrivere il nome (completamente qualificato) di ciascun test sulla console come funziona, sebbene l'output non includa il risultato del test.Tuttavia, ti mostrerebbe quali test erano eseguiti con successo.

L'unica altra opzione è quella che hai scontato, quello di scrivere la tua implementazione EventListener. La documentazione su quell'interfaccia è un po 'di luce, ma La documentazione NULIT sulla scrittura di un assembly add-in NUnit dovrebbe essere sufficienteVai è iniziato se cambi idea su questo.

Altri suggerimenti

Prima di tutto in un futuro vicino sembra che una tale registrazione sarà fornita da Nunit fuori dalla scatola - questa funzione era già richiesta - Scrivi risultati parziali XML come test accadono invece che alla fine .

Fino a quando è finito, dobbiamo scrivere un codice personalizzato e in caso di usi Nunit <3.x è piuttosto semplice:
1) È necessario creare un listener di eventi che implementa l'interfaccia EventListener) 2) Questa interfaccia fornisce notifiche per diversi stati di esecuzione del test, ad esempio. RunStart, runfinished o testFinito. Tutto quello che devi è un'implementazione di registrazione pertinente per il tuo caso. Snippet dal mio codice:

 public void RunStarted(string name, int testCount)
 {
     try
     {
         _instanceId = Environment.GetEnvironmentVariable("InstanceId");
         _buildId = Environment.GetEnvironmentVariable("BuildId");
         _browser = Environment.GetEnvironmentVariable("BrowserToTest");
         _template = Environment.GetEnvironmentVariable("TemplateToTest");
     }
     catch { }
 }

 public void TestFinished(TestResult result)
 {
     if (result.ResultState == ResultState.Ignored)
     {
         return;
     }
     var r = new TestingWorkerData
     {
         BuildId = _buildId,
         InstanceId = _instanceId,
         TestName = result.FullName,
         Success = result.IsSuccess,
         TimeTaken = result.Time.ToString(CultureInfo.InvariantCulture),
         Message = result.Message,
         StackTrace = result.StackTrace,
         Browser = _browser,
         Template = _template
     };         
     File.AppendAllLines(@"z:\\results.txt", new[] {JsonConvert.SerializeObject(r)});
 }

 public class TestingWorkerData
 {
     public string TestName { get; set; }
     public bool Success { get; set; }
     public string TimeTaken { get; set; }
     public string Message { get; set; }
     public string StackTrace { get; set; }
     public string InstanceId { get; set; }
     public string Browser { get; set; }
     public string Template { get; set; }
     public string BuildId { get; set; }
 }
.

3) L'ultima cosa è la creazione di addin Nunit:

[NUnitAddin]
public class ProgressReporterNugetAddin : IAddin
{
    public bool Install(IExtensionHost host)
    {
        var listeners = host.GetExtensionPoint("EventListeners");
        listeners.Install(new ProgressReporterEventListener());
        return true;
    }
}
.

Nota: c'è un buon articolo http: / /jimmykeen.net/2015/02/28/logging-test-results-with-nunit/ che copre approccio simile e altro ancora.
Purtroppo funziona per Nunit <3.x solo Dal momento che Nunit3 è stato pesantemente riscritto - ad esempio. Nessuna interfaccia EventListener più.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top