Nunit: Anexar arquivos ao resultado do teste

Criado em 15 jul. 2016  ·  34Comentários  ·  Fonte: nunit/nunit

Oi, pessoal,
Eu sou novo no NUnit e estou me perguntando como posso adicionar um arquivo de anexo para a saída no explorador de teste.
No teste de unidade, há um método na chamada de classe TestContext AddResultFile que pode fazer isso.
há alguém que possa me ajudar.

obrigado,
giang

Epic done feature normal

Comentários muito úteis

Este recurso é obrigatório.
Estamos executando nossos testes de comportamento automatizados com NUnit e Selenium. Se um teste falhar, adoramos anexar uma captura de tela do navegador ao resultado do teste: essa é uma grande ajuda para corrigir o teste.
Para fazer isso, tivemos que usar o framework de teste da Microsoft, mas não é tão poderoso quanto o NUnit (atributo no nível de montagem ou classe, classe de teste genérica ...). Portanto, estamos ansiosos para esse recurso no NUnit.

Todos 34 comentários

O método que você mencionou faz parte da classe TestContext na estrutura de teste da Microsoft. NUnit também possui uma classe com o mesmo nome, mas não tem relação com a classe MsTest e não possui tal método. Não há nenhum recurso no NUnit para anexar arquivos à saída.

Obrigada Charlie.
Mas o método AddResultFile será adicionado ao NUnit no futuro?
Este método é realmente útil.

Não há nenhum plano para isso neste momento. Se você quiser transformar esse problema em uma solicitação desse recurso, podemos fazer isso e reabri-lo.

Em caso afirmativo, você deve explicar com mais detalhes como funcionaria. Como os arquivos são criados, onde são armazenados, etc. Você está pedindo que o NUnit realmente crie os arquivos ou simplesmente mantenha uma referência a eles?

Claro, teríamos que aceitar a ideia, priorizá-la e agendá-la para algum lançamento.

Obrigado pela sua resposta Charlie.
Seria ótimo se esse método fosse adicionado ao NUnit.
funcionaria exatamente como o método AddResultFile da classe TestContext na estrutura de teste da Microsoft.
algo como vincular o resultado do teste (resultado do teste do arquivo html ou captura de tela) à Saída do Teste no Explorador de Testes no VS. Você pode ver a imagem como abaixo.

screenshot

Obrigado pela ideia. Vou reabrir isso.

Para ir mais longe, entretanto, teríamos que descobrir como ele funciona para o próprio NUnit, não apenas para o adaptador. Estou marcando isso como uma ideia, que é o que chamamos de algo que não está bem definido para ser considerado como um recurso futuro. Talvez outras pessoas entrem em cena com sugestões.

Coisas que precisamos considerar:

  • Como isso ficaria no resultado XML
  • Podemos empacotar tudo isso de alguma forma que o resultado e os anexos sejam mantidos juntos?
  • O que o console NUnit faria com ele, se alguma coisa.
  • O NUnit gui exibiria de alguma forma

Este recurso é obrigatório.
Estamos executando nossos testes de comportamento automatizados com NUnit e Selenium. Se um teste falhar, adoramos anexar uma captura de tela do navegador ao resultado do teste: essa é uma grande ajuda para corrigir o teste.
Para fazer isso, tivemos que usar o framework de teste da Microsoft, mas não é tão poderoso quanto o NUnit (atributo no nível de montagem ou classe, classe de teste genérica ...). Portanto, estamos ansiosos para esse recurso no NUnit.

Estou mudando isso para um recurso que precisa de design, que é mais sólido do que uma ideia. Ainda precisamos resolver as questões listadas em meu comentário anterior.

Eu acho que ele está serializando o arquivo no xml ou mantendo um diretório referenciado ao lado dele. Um leva a um grande xml, lentidão geral e os arquivos requerem um intérprete específico, o outro leva à possibilidade de os arquivos serem separados dos resultados e as referências quebradas.

Qual é o menor dos males? Eu sinto que com o primeiro, a dor vai superar os benefícios de manter tudo no pacote - e ter links relativos 'esperançosamente disponíveis' será suficiente.

  • O que o console NUnit faria com ele, se alguma coisa.
  • O NUnit gui exibiria de alguma forma

Para a GUI, algo como a interface acima parece bom o suficiente, apenas hiperlinks para o arquivo anexado. O console, imo, deve notificar o usuário na mensagem de teste de falha que um arquivo está disponível e sua localização.

Imagino que isso exigirá que alguém envie um PR, uma vez que o design tenha sido elaborado - @fredgate , está interessado? 😄

Devemos ver como o MSTest armazena os arquivos. Espero que a extensão do Visual Studio exija um link para o arquivo na unidade.

Parece que uma referência no XML é o caminho a percorrer. Para NUnit, a localização inicial lógica é o diretório de trabalho, que é para onde o XML vai por padrão. Isso resolve meus primeiros dois pontos acima.

Respondendo meus outros pontos:

  • Acho que o console não faria mais do que listar os anexos com o caminho, assim como faz para os resultados.
  • A interface do usuário pode ter algum tipo de menu ou painel para listar os anexos. Ele pode exibi-los, desde que um aplicativo padrão tenha sido definido para o tipo de arquivo específico.

Parece um bom recurso, que eu gostaria de elevar para prioridade normal.

@rprouse Você se lembra de como Gálio lidava com os anexos?

O que um elemento de anexo precisa incluir em termos de atributos e elementos? Algo assim?

<attachments>
    <attachment  description="Final screen shot">ScreenShot.jpg</attachment>
    ...
</attachments>

Presumo que seja filho do teste que o produziu, então temos essa informação. Os usuários podem querer incluir várias capturas de tela, daí a descrição. Algo mais?

Qual é a sintaxe para anexar algo? Devemos usar TestContext? Deve haver uma maneira de associá-lo a uma declaração para que o anexo seja criado automaticamente em caso de falha?

Alguém quer escrever uma especificação para isso?

Parece um bom recurso, que eu gostaria de elevar para prioridade normal.

👍

@rprouse Você se lembra de como Gálio lidava com os anexos?

Não, nunca usei acessórios. Eu gosto do seu formato XML. Pessoalmente, acho que devemos começar adicionando anexos do TestContext, pois é a rota mais simples. Podemos então avaliar se queremos expandir isso para Asserts.

Então TestContext.CurrentContext.AddAttachment ?

Com sobrecargas para (string path) e (string path, string description) ?

Talvez já tenhamos uma especificação!

Aumente a prioridade desse recurso. Seria muito útil para nosso resumo de resultados de teste anexar capturas de tela da IU. Estariam esses anexos disponíveis no resultado da compilação dentro do VSTS (Visual Studio Team Services)?
Muito obrigado Charlie

Acho que é um bom recurso e publicarei anexos como artefatos de construção no TeamCity

Eu a levantei para a prioridade normal, uma vez que @rprouse já havia sugerido isso. No entanto, observe que os itens de prioridade baixa e normal às vezes precisam esperar que alguém se inspire para implementá-los - um committer NUnit ou um contribuidor. É mais uma decisão pessoal do que uma decisão da equipe sobre quando será feito.

Espero que ninguém tenha se esquecido disso. Seria um recurso muito útil.

Acho que os comentários anteriores resolveram todos os problemas de design, então estou retirando o rótulo de design e adicionando o problema de implementação ao Backlog.

Não é tanto que tenhamos esquecido isso, mas que temos um grande número de coisas acontecendo. Como mencionei em um comentário anterior, itens de prioridade normais como este não estão programados como parte de nosso planejamento de lançamento. Cabe a algum membro da equipe ou colaborador externo se interessar o suficiente para que eles aceitem. Esperançosamente, adicioná-lo à lista de pendências irá motivar alguém a dar um passo à frente. Dependendo de suas habilidades, pode ser você! 😄

ótimo recurso! seria muito apreciado. espero que alguém implemente isso logo 😄

Acabei de fazer um PR para a funcionalidade de estrutura necessária para implementar isso, em # 2152. Como há algumas pessoas rastreando esse problema, estou planejando converter esse problema para um suporte épico e de corrida de pista, assim que decidirmos o que fazer lá.

Aqui está o meu pensamento:

Adaptador VS
Este é um recurso que o MSTest possui, portanto, a estrutura do adaptador VS já tem funcionalidade para mostrar arquivos anexados. Só preciso descobrir como conectá-lo. 🙂

Console / NUnitLite
Estou confuso aqui. Com os testes Errored / Warning, faz sentido mostrar o caminho de arquivo / descrição de um anexo com o resultado. Que tal anexos em testes aprovados? Devemos ter uma saída de 'Informações' para mostrá-los? Portanto, os corredores de console teriam três tipos de saída - Informações / Avisos / Erros?

GUI / Xamarin
Ambos devem eventualmente dar suporte a isso, mas não acho que seja uma alta prioridade. Vou criar problemas, mas não os anexarei a esta Epopéia - eles podem ser feitos quando houver demanda / tempo permitir.

TeamCity
@NikolayPianikov - você disse que estava interessado nisso. Talvez valha a pena rastrear # 2152. 🙂

Reflexões sobre tudo o que foi dito acima? @ nunit / framework-team? Farei questões individuais assim que decidirmos as próximas etapas.

Os problemas do Descubra como oferecer suporte a anexos na interface do usuário" - o mesmo para qualquer outro em que você não tenha certeza.

Para o executor do console, não mostramos atualmente todos os testes, embora isso pudesse ser feito. Qualquer relatório de detalhes pode ser tratado por uma extensão ou uma transformação XSL customizada. O último seria trivial de implementar para qualquer pessoa que esteja disposta a fazer codificação XSL. 😄 Pode ser uma transformação contribuída.

NUnitLite é complicado, pois queremos mantê-lo bem leve. No entanto, supõe-se que os usuários nomearão seus anexos de maneira inteligente e os colocarão todos no mesmo diretório, de modo que sejam fáceis de localizar. Na verdade, isso também funciona para o corredor do console
Acho que o natural para o gui é mostrar o nome e a descrição dos anexos junto com tudo o mais sobre o resultado do teste. Podemos torná-lo um link se o usuário tiver um aplicativo apropriado instalado que irá abrir o arquivo.

Depois de termos os anexos, acho que é muito fácil adicioná-los aos resultados que passamos para o Visual Studio a partir do adaptador.

Criei https://github.com/nunit/docs/issues/197 e https://github.com/nunit/nunit3-vs-adapter/issues/332 para cobrir as próximas etapas.

Com relação ao suporte do runner - se as únicas chamadas atuais para isso forem integração com o adaptador VS, estou inclinado a implementá-lo lá, por enquanto. É um recurso que se encaixa melhor com corredores gráficos, então cli - e outro suporte para corredores sempre pode ser adicionado no futuro, se houver necessidade.

@ChrisMaddock Eu adoraria ver o suporte para anexos do runner do console.

@kdubau - timing perfeito! 😄 Nesse caso, como você gostaria que fosse? Qual seria o seu caso de uso?

Eu poderia imaginar a adição de um bloco de texto 'anexos' para testar falhas / avisos, listando a descrição e o caminho do arquivo. Um dos motivos pelos quais estava debatendo não fazer isso é que não estava convencido de que muitos usuários gostariam de copiar / colar um caminho de arquivo de seu shell para encontrar o respectivo arquivo. Você discordaria?

A outra questão a se pensar é que o console atualmente exibe apenas testes com falha / advertência, e nem todos os testes. Devemos criar uma terceira lista de resultados ('Informações'?) Que mostra todos os testes aprovados com anexos?

Talvez estivesse tudo bem se o executor do console mostrasse apenas anexos para testes que falharam, já que isso é possivelmente tudo o que há de interessante em uma execução de console. Estou imaginando arquivos de log relevantes para falhas aqui e tal.

@kdubau Em vez de descrevê-lo aqui, sugiro que você crie um novo problema no repo nunit-console.

@ChrisMaddock @CharliePoole eu poderia ter entendido mal o contexto aqui. Estou interessado apenas em ter os anexos referenciados no XML de saída - não há necessidade de realmente exibir as informações do anexo na saída do console. Meu caso de uso é fazer com que meu sistema de CI (Visual Studio Team Services) seja capaz de carregar os anexos listados no XML como artefatos de construção (portanto, seria necessário apenas uma referência ao arquivo no disco local).

Eu estava preocupado com a execução de testes por meio do executor do console, que não teria os anexos no XML, mas ao ler mais, acho que essa não era a questão. Por favor me corrija se eu estiver errado :)

@kdubau - Você está certo. 🙂 # 2152 acaba de ser mesclado, o que oferece suporte a anexos no xml de resultados. Se tudo correr como planejado, isso fará parte do NUnit 3.7, lançado na próxima semana.

Certo ... se precisarmos de "suporte" no console, isso significaria fazer algo mais do que simplesmente salvar o XML que vem do framework. No caso do adaptador nunit3, acho que @ChrisMaddock está definindo o que isso significa.

Ei pessoal, esse trabalho está feito ou mais pendente? Não consegui encontrar nenhum problema em aberto ou relações públicas relacionadas a ele.

Peço desculpas se algo estiver faltando, mas meus anexos de teste ainda não estão aparecendo no VS Test Explorer como eu esperava. Estou usando o NUnit3TestAdapter 3.8.0 do NuGet e a API TestContext.AddTestAttachement(file) mas não vejo os anexos no Test Explorer. Estou esperando algo assim:

image

Minhas expectativas estão erradas?

@kdubau - Não, ele deve ser lançado no NUnit v3.7 e NUnit3TestAdapter 3.8. Consulte https://github.com/nunit/nunit3-vs-adapter/issues/332 para a implementação. Este problema continua em aberto porque ainda não consegui adicionar as duas frases da documentação necessária ... 😱

Se não estiver funcionando, primeiro executaria seus testes no console do NUnit - e veria se seu anexo está registrado corretamente no arquivo xml de resultados. Caso contrário, abra um problema neste repositório; se for, abra um problema no repositório do adaptador e podemos investigar mais a fundo. 🙂

@ChrisMaddock ok, problema criado https://github.com/nunit/nunit3-vs-adapter/issues/373

Graças à motivação de @kdubau , finalmente documentei esse recurso e posso fechar esta epopéia. 😄

Esta página foi útil?
0 / 5 - 0 avaliações