Tener NUnit consola informe de resultados de la prueba durante la ejecución de la prueba, después de cada prueba

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

  •  23-12-2019
  •  | 
  •  

Pregunta

Corro NUnit consola en mi prueba de montaje, pero a veces mi NUnit se bloquea (actualmente estoy averiguando por qué).Cuando nunit se bloquea ningún informe xml se crea y de hecho estoy a la izquierda sin ningún tipo de informe de prueba.La ejecución de la prueba es muy larga y es una mala situación si voy a perder la totalidad de la ejecución de la prueba de informe.Hay una manera de decirle a NUNit para escribir el archivo de registro xml como va (después de cada prueba).Incluso si eso significa que el archivo xml no se cierra correctamente.Sé que es posible el uso de NUnit TestListener.Pero hay un interruptor o algo que no incluyen la escritura de código extra a mí mismo.

¿Fue útil?

Solución

Usted podría invocar nunit-console con el /labels modificador de línea de comandos.Esto hará que escribir (completo) nombre de cada prueba para la consola ya que se ejecuta, a pesar de que la salida no incluye el resultado de la prueba.Sin embargo, sería una muestra de que los exámenes que había ejecutado correctamente.

La única otra opción es la que usted ha de descuento, el de la escritura de su propia EventListener aplicación. La documentación acerca de la interfaz es un poco de luz, pero NUnit documentación acerca de la escritura de un NUnit agregar-en asamblea debería ser suficiente para empezar si usted cambia de opinión acerca de eso.

Otros consejos

En primer lugar, en un futuro cercano, parece que se proporcionará un registro de este tipo por NUNNIG, esta función ya se solicitó: escriba resultados parciales XML como suceden las pruebas en lugar de al final .

hasta que haya hecho necesitamos escribir algún código personalizado y, en caso de que use NUNIT <3.x es bastante simple:
1) Necesitas crear un escuchador de eventos que implementa la interfaz de Listener Listener
2) Esta interfaz proporciona notificaciones para diferentes estados de ejecución de la prueba, por ejemplo. RunStarted, runfinished o testFinished. Todo lo que necesita es una implementación del registro relevante para su caso. Snippet de mi código:

 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) Lo último es la creación de NUNIT ADDIN:

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

Nota: Hay un artículo bastante bueno http: / /jimmykeen.net/2015/02/28/logging-test-results-with-nunit/ que cubre un enfoque similar y más.
Lamentablemente funciona para nunit <3.x solo Dado que Nunit3 estaba fuertemente reescrito, por ejemplo. Ninguna interfaz de Listener Listener.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top