Demander à la console NUnit de rapporter les résultats des tests pendant l'exécution du test, après chaque test

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

  •  23-12-2019
  •  | 
  •  

Question

J'exécute la console NUnit sur mon assemblage de test mais parfois mon NUnit plante (je suis actuellement en train de comprendre pourquoi).Lorsque Nunit plante, aucun rapport XML n'est créé et je me retrouve effectivement sans aucun rapport de test.Le test est très long et c'est une mauvaise situation si je perds l'intégralité du rapport de test.Existe-t-il un moyen de dire à NUNit d'écrire le fichier journal XML au fur et à mesure (après chaque test).Même si cela signifie que le fichier XML ne sera pas fermé correctement.Je sais qu'il est possible d'utiliser NUnit TestListener.Mais existe-t-il un commutateur ou quelque chose qui n'inclut pas l'écriture de code supplémentaire moi-même.

Était-ce utile?

La solution

Vous pourriez invoquer nunit-console avec le /labels commutateur de ligne de commande.Cela l'amènera à écrire le nom (complet) de chaque test sur la console au fur et à mesure de son exécution, bien que la sortie n'inclue pas le résultat du test.Cependant, cela vous montrera quels tests ont été exécutés avec succès.

La seule autre option est celle que vous avez écartée, celle d'écrire le vôtre EventListener mise en œuvre. La documentation sur cette interface c'est un peu léger, mais la documentation NUnit sur l'écriture d'un assembly de complément NUnit Cela devrait suffire pour vous aider à démarrer si vous changez d'avis à ce sujet.

Autres conseils

Tout d'abord dans un avenir proche, on dirait qu'une telle journalisation sera fournie par Nunit hors de la boîte - cette fonctionnalité a déjà été demandée - écrire des résultats partiels XML comme des tests se produisent au lieu de la fin .

Jusqu'à ce que c'est fait, nous devons écrire un code personnalisé et, au cas où vous utilisez Nunit <3.x son assez simple:
1) Vous devez créer un auditeur d'événements qui implémente l'interface EventListener
2) Cette interface fournit des notifications pour différents états d'exécution des tests, par exemple. Runstarté, exécuté ou testé. Tout ce que vous avez besoin est une mise en œuvre de la journalisation pertinente pour votre cas. Snippet de mon code:

 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) La dernière chose est la création de Nunit Adidin:

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

Remarque: il y a un assez bon article http: / /jimmykeen.net/2015/02/28/2015/02/28/logging-test-results-with-nunit/ qui couvre une approche similaire et plus.
Malheureusement, cela fonctionne pour Nunit <3.x uniquement Depuis que Nunit3 était fortement réécrit - par exemple. Aucune interface d'événement de Listenner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top