Tendo o NUnit console de relatório de resultados de testes durante a execução do teste, depois de cada teste

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

  •  23-12-2019
  •  | 
  •  

Pergunta

Eu executar o NUnit consola na minha prova de montagem, mas às vezes meu NUnit falha (atualmente estou tentando descobrir o porquê).Quando o nunit falha nenhum relatório xml é criado e que eu, efetivamente, sou de esquerda, sem qualquer relatório de teste.O teste é muito longo e é uma situação ruim se eu perder todo o teste, executar relatório.Existe uma maneira de dizer o NUNit para escrever o arquivo de log xml como ele vai (depois de cada teste).Mesmo se isso significa que o arquivo xml não ser fechado corretamente.Eu sei que é possível usar o NUnit TestListener.Mas há um interruptor ou algo que não incluem a escrita de código extra-me.

Foi útil?

Solução

Você poderia invocar nunit-console com o /labels opção de linha de comando.Isso fará com que ele escreva (totalmente qualificado) do nome de cada teste para o console, como ele é executado, embora o resultado não inclui o resultado do teste.No entanto, seria mostrar-lhe que os testes tinham executado com êxito.

A única outra opção é o que você tem desconto, que de escrever o seu próprio EventListener implementação. A documentação sobre a interface é um pouco de luz, mas o NUnit documentação sobre como escrever um NUnit suplemento assembleia deve ser o suficiente para você começar se você mudar sua mente sobre isso.

Outras dicas

Primeiro de tudo, em um futuro próximo, parece que tal registro será fornecida pela NUnit fora da caixa - esse recurso foi já solicitado Escrever os resultados parciais XML como testes de acontecer, em vez de no final.

Até que seu feito nós precisa escrever um código personalizado e em caso u usar o NUnit < 3.x é muito simples:
1)Você precisará criar um ouvinte de evento que implementa a interface EventListener
2)Esta interface fornece notificações para os diferentes estados de execução do teste, por exemplo.RunStarted, RunFinished ou TestFinished.Tudo o que você precisa é uma implementação de log relevantes para o seu caso.Trecho do meu 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)A última coisa é a criação de NUnit suplemento:

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

Nota:Há um bom artigo http://jimmykeen.net/2015/02/28/logging-test-results-with-nunit/ que cobre abordagem semelhante e mais.
Infelizmente ele funciona para O NUnit < 3.x SÓ desde NUnit3 foi fortemente reescrito, por exemplo.não EventListener interface mais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top