Outras dicas

É um pouco hackish, mas a abordagem que eu estou usando é usar um versão modificada do Maven cobertura plug-in (que é disponível a partir de sua repo ). Ele fornece uma cobertura: alvo gerar-relatório, de modo que você pode inserir cobertura: instrumento e cobertura: gerar-relatório em seu ciclo de vida antes e depois de testes executados, respectivamente. Isso vai obter os dados de cobertura que você quer sem o duplicado a execução do teste / gravação.

O problema subjacente é que todos os não-trevo plugins cobertura Maven eu correr em são construídos em torno da idéia de executar os testes com cobertura separadamente do principal de execução de teste no ciclo de vida Maven. Isto, obviamente, resulta em dois conjuntos de execuções de teste. Se você estiver usando um projeto de estilo livre, você só vai ter um conjunto de testes gravados (uma vez que, mesmo com duas execuções de teste, há apenas uma cópia da saída de teste), mas o tipo de projeto Maven realmente intercepta execuções o Maven mojo e saída de teste registros / resultados em tempo de execução do teste, em vez de tudo de uma vez, no final da compilação como projetos de freestyle fazer. Isto tem muitas vantagens, mas também tem a desvantagem em vez gritantes que um único teste sendo executado duas vezes fica contado como dois testes.

Dito isto, enquanto eu vi argumentos fortes para executar testes contra ambos código não-instrumentado e instrumentado, prefiro executar apenas os testes de uma vez, contra o código instrumentado - e não apenas por causa das questões Maven / Hudson, mas porque quando você tem provas que levam 45 minutos, parece francamente bobo para executá-los duas vezes para gerar o mesmo resultado.

Robert,

Eu tive esse problema bem e descobriu que Hudson não relata o dobro se você configurar o projeto como um projeto de estilo livre, em vez de um projeto Maven2. Você perde um pouco da simpatia de ter um projeto maven2, mas para nós, foi um comercial que tínhamos de fazer.

Jeff

Nós usamos projectos estilo livre e não tem este problema, assim como indicado, esta pode ser a origem do problema.

Para fornecer as características que se fundem, criamos nosso próprio repositório de artefatos (nós não estamos usando Maven). No final de cada construção, nós copiar o arquivo cobertura.ser a um compartilhamento de rede, renomeá-lo no processo. Temos um trabalho visão consolidada que copia todos os arquivos de cobertura e os arquivos de código fonte (outro artefato construção copiados para o compartilhamento de rede) para o diretório de construção local e gerar o relatório de Cobertura.

A falta de um repositório de artefato padrão dentro Hudson é um pouco frustrante, mas faz sentido dar os autores normalmente usam Maven para essas necessidades. Nossos corridas processo de construção mais de múltiplos servidores por isso não podemos apenas usar caminhos relativos para os outros diretórios de trabalho.

Note, nós fazemos a mesma coisa para outras métricas: resultados dos testes, JavaNCSS, ect. e juntou-se ou usando as ferramentas corretas ou algum código personalizado.

Nós usamos o mesmo repositório de artefatos tradicionais de construção:. DLLs, JARs, scripts de instalação

Veja SD Java Cobertura de Teste para um extremamente baixo ferramenta de sobrecarga com um bom GUI. Eu não tenho certeza se entendi sua "correr duas vezes" problema, mas se você correu (o mesmo determinista) testa duas vezes com as ferramentas SD, você poderá obter os mesmos dados de cobertura de teste, por exemplo, a sua idempotent. Se os testes são não-determinístico, você vai ter duas corridas de teste diferentes, mas estas ferramentas se funde facilmente os resultados de várias corridas em um único resumo geral.

Eles também lidar com grandes aplicações, e múltipla punho roscado aplicações muito bem (pequenas lascas de tempo pode fazer a resposta um pouco imprecisa em teoria, mas praticar isso simplesmente não é um problema).

Você já considerou Clover da Atlassian ?

O maven-clover2-plugin tem uma nova meta: clover2:. configuração que simplesmente instrumento de seus testes sem bifurcação do ciclo de vida, ou executar os testes duas vezes

Você iria definir as metas para ser executado em Hudson assim:

mvn clover2:setup verify clover2:aggregate clover2:clover

A-clover2-plugin Maven é absolutamente livre para experimentar durante 30 dias.

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