Eu tenho o Hudson como servidor de integração contínua e quero usar a opção 'Publicar relatório de resultado do teste JUnit'. Mas eu não uso ferramentas xUnit para teste, em vez disso, tenho scripts de shell que executam testes e retornam resultados em formato simples. Estou pensando em criar um script que transforme esses resultados no formato JUnit. Então, eu sou interessante como o arquivo JUnit deve ficar?
183
Respostas:
Fiz uma coisa semelhante há alguns meses atrás, e esse formato simples foi suficiente para Hudson aceitá-lo como um protocolo de teste:
Esta pergunta tem respostas com mais detalhes: Especificações. para saída XML JUnit
fonte
class
foi rejeitado e sóclassname
funcionou.<testsuite tests="(number of tests)">
ex.<testsuite tests="10">
.<testcase classname="foo.bar" name="ATest" />
Isso colocará a classe bar em um pacote foo no Jenkins, tornando sua coleção de testes mais organizada.Acabei de pegar o junit-4.xsd ao qual outras pessoas vincularam e usaram uma ferramenta chamada XMLSpear para converter o esquema em um arquivo XML em branco com as opções mostradas abaixo. Este é o resultado (ligeiramente limpo):
Alguns desses itens podem ocorrer várias vezes:
testsuites
elemento, pois é assim que o XML funciona, mas pode haver váriostestsuite
elementos dentro dotestsuites
elemento.properties
elemento pode ter váriosproperty
filhos.testsuite
elemento pode ter váriostestcase
filhos.testcase
elemento pode ter várioserror
,failure
,system-out
, ousystem-err
crianças.fonte
Rootelement
:testsuites
,Max recursive de...
:2
,Max Repeat factor
:2
,include optional elements
: (sim = assinalada),include optional attributes
? (sim = assinalada)A resposta principal da pergunta Anders Lindahl refere-se a um arquivo xsd .
Pessoalmente, achei esse arquivo xsd também muito útil (não me lembro de como encontrei esse). Parece um pouco menos intimidador e, tanto quanto eu o usei, todos os elementos e atributos parecem ser reconhecidos por Jenkins (v1.451)Porém, uma coisa: ao adicionar vários
<failure ...
elementos, apenas um foi mantido em Jenkins. Ao criar o arquivo xml, concatenarei agora todas as falhas em uma.Atualização 2016-11 O link está quebrado agora. Uma alternativa melhor é esta página do cubic.org: formato de arquivo de relatório XML JUnit , onde foi feito um bom esforço para fornecer um exemplo documentado sensato . Exemplo e xsd são copiados abaixo, mas sua página parece bem melhor.
arquivo XML de amostra JUnit
Arquivo JUnit XSD
fonte
Não consegui encontrar nenhuma informação boa sobre isso, então fiz algumas tentativas e erros. Os seguintes atributos e campos (e somente estes) são reconhecidos por Jenkins (v1.585).
(Comecei com este documento XML de amostra e trabalhei de trás para frente.)
fonte
Estrutura básica Aqui está um exemplo de um arquivo de saída JUnit, mostrando um resultado ignorado e com falha, além de um único resultado passado.
Abaixo está a estrutura documentada de um relatório XML JUnit típico. Observe que um relatório pode conter 1 ou mais suíte de testes. Cada suíte de testes possui um conjunto de propriedades (registrando informações do ambiente). Cada suíte de teste também contém 1 ou mais casos de teste e cada caso de teste conterá um nó ignorado, com falha ou erro, se o teste não for aprovado. Se o caso de teste tiver passado, ele não conterá nenhum nó. Para mais detalhes de quais atributos são válidos para cada nó, consulte a seção "Esquema".
fonte
Existem vários esquemas para os resultados "JUnit" e "xUnit".
model/xsd
)Observe que existem várias versões do esquema em uso pelo xunit-plugin Jenkins (a versão mais recente atual é
junit-10.xsd
que adiciona suporte ao formato Erlang / OTP Junit).Algumas estruturas de teste, bem como os plug-ins de relatório no estilo "xUnit", também usam seu próprio segredo para gerar relatórios no estilo "xUnit"; eles podem não usar um esquema específico (leia: eles tentam, mas as ferramentas podem não validar contra nenhum um esquema). Unittests Python em Jenkins? fornece uma comparação rápida de várias dessas bibliotecas e pequenas diferenças entre os relatórios xml gerados.
fonte
Boas respostas aqui sobre o uso de python: (existem várias maneiras de fazer isso) Unittests de Python no Jenkins?
IMHO, a melhor maneira é escrever testes unittest do python e instalar o pytest (algo como 'yum install pytest') para instalar o py.test. Em seguida, execute testes como este: 'py.test --junitxml results.xml test.py' . Você pode executar qualquer script python mais unittest e obter resultados xml do jUnit.
https://docs.python.org/2.7/library/unittest.html
Na configuração de construção do jenkins, ações de pós-construção Adicione uma ação "Publicar relatório de resultado do teste JUnit" com result.xml e mais arquivos de resultado do teste que você produz.
fonte
Decidi postar uma nova resposta, porque algumas respostas existentes estão desatualizadas ou incompletas.
Primeiro de tudo: não há nada como
JUnit XML Format Specification
, simplesmente porque o JUnit não produz nenhum tipo de relatório XML ou HTML.A própria geração de relatório XML vem da tarefa Ant JUnit / Maven Surefire Plugin / Gradle (o que você usar para executar seus testes). O formato do relatório XML foi introduzido pela Ant e posteriormente adaptado pela Maven (e Gradle).
Se alguém apenas precisa de um formato XML oficial, então:
Espero que ajude alguém.
fonte
**/build/test-results/**/TEST-*.xml
. Muito obrigado!!!