Cobertura de código jacob - em seguida publicar / mostrar em Jenkins
Estou tentando configurar a cobertura de código para um projeto de aplicativo Java.
Nome do projeto: NewApp
Estrutura do projeto:
src / java / ** (código-fonte)src / java-test (testes de unidade - Jnuit)teste / teste (teste de integração)teste / testes (testes de aceitação)tomcat / * (contém scripts de início / parada do tomcat)Pastas xx /..et que são necessárias para uma aplicação normal.Versão Gradle: 1.6
Ambiente: Linux
Eu tenho um script de construção gradle em execução que busca dependências de aplicativo (NewApp) (ou seja, jars de serviço usados pelo aplicativo para o processo de construção) de um repositório de artefatos de construção (artifactory / maven para ex) e cria o aplicativo.
Agora, neste momento, eu queria obter cobertura de código usando o plugin JaCoCo para o meu projeto de aplicativo NewApp.
Eu segui a documentação por Gradle / Jacoco mas não parece criar nenhum relatório / ... pasta para jacoco etc onde eu posso achar o que relatório de cobertura de Jacoco fez.
Minhas perguntas: 1. Para obter a cobertura de código usando testes de unidade (Junit), presumo que tudo o que tenho que fazer é o seguinte e NÃO exigirá que eu inicie / pare o tomcat antes de executar o teste de unidade (teste tarefa ie "gradle test" ) para obter cobertura de código para / via usando testes de unidade. Por favor, informe / corrija. O código (apenas para parte de teste de unidade de Jacobs Gradle) - Eu estou usando é:
apply plugin: 'jacoco'
test {
include 'src/java-test/**'
}
jacocoTestReport {
group = "reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled true
html.enabled true
csv.enabled false
}
//classDirectories = fileTree(dir: 'build/classes/main', include: 'com/thc/**')
//sourceDirectories = fileTree(dir: 'scr/java', include: 'com/thc/**')
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}
e para testes de integração:
task integrationTest(type: Test) {
include 'test/java/**'
}
Como o jacocoTestReport depende da (s) tarefa (s) de teste, eles serão chamados primeiro e, finalmente, o jacocoTestReport relatará o que encontrou para a cobertura do código.
Para obter a cobertura de código para testes de integração, suponho que devo iniciar o tomcat primeiro (ou seja, antes de executar / chamar teste alvo para testes de integração), depois chamar "gradle integrationTest" ou "gradle test" e parar tomcat - para obter o código relatório de cobertura. De outras postagens do blog, também descobri que é necessário configurar a variável JAVA_OPTS para atribuir o agente jacoco antes do tomcat ser iniciado.por ex: configurando a variável JAVA_OPTS como:
export JACOCO="-Xms256m -Xmx512m -XX:MaxPermSize=1024m -javaagent:/production/jenkinsAKS/jobs/NewApp/workspace/jacoco-0.6.3.201306030806/lib/jacocoagent.jar=destfile=/production/jenkinsAKS/jobs/NewApp/workspace/jacoco/jacoco.exec,append=true,includes=*"
export JAVA_OPTS="$JAVA_OPTS $JACOCO"
Sendo novo no Gradle / groovy - não tenho certeza de qual código devo escrever dentro do build.gradle (script de compilação) para fazer com que os testes de integração / unidade acima funcionem se envolver start / stop do tomcat. Se alguém puder fornecer um exemplo de script para fazer isso, tentarei.
Eu não estou recebendo nenhuma cobertura de código agora, quando eu publico a cobertura de código Jacoco em Jenkins (usando Jenkins post build action para publicar relatórios Jacoco). O painel de criação do Jenkins mostra 0% de cobertura de código (ou seja, barras mostrando toda a cor vermelha, sem verde para a cobertura real do código).
Preciso de seu conselho para obter alguma tração sobre isso.