2014-12-04 2 views
19

Я использую JaCoCo для покрытия кода. Отчеты об модульном тестировании создаются с помощью junit, и они импортируются правильно, так что информация об тестовом модуле отображается правильно. проблема есть, что я получаю сообщение об ошибке: Нет информации о покрытии за тест., а покрытие кода показывает значение 0% для модульных тестов, интеграционных тестов и общего охвата. Я проверил всю необходимую информацию в sonar-project.properties как двоичный, ЦСИ, тесты и т.д.JaCoCo - SonarQube - Нет информации о покрытии за один тест

Я использую:
- SonarQube 4.5.1
- SonarRunner 2,4
- MySQL
- JUnit 4.1.1
- jacoco 0.7.2

jacoco.exec находится в файле/цели в базовом каталоге проекта.

После этого вы можете увидеть sonar-project.properties: С моей точки зрения все необходимые пути установлены правильно. (то есть двоичные, ЦСИ, тесты)

Comma-separated paths to directories with sources (required) 
sonar.sources=src 

compiled code 
sonar.java.binaries=class 

source code of unit tests 
sonar.tests=test/src 

Comma-separated paths to files with third-party libraries (JAR files in the case of Java) 
sonar.java.libraries=jar 

Language 
sonar.language=java 

Encoding of the source files 
sonar.sourceEncoding=UTF-8 

Additional parameters 
sonar.my.property=value 

Set Project Base 
sonar.projectBaseDir=C:/snapshots/steffen_latest/software/java 

Tells SonarQube to reuse existing reports for unit tests execution and coverage reports 
sonar.dynamicAnalysis=reuseReports 

JUnit path 
sonar.surefire.reportsPath=test/report/junit 

Tells SonarQube where the unit tests execution reports are 
sonar.junit.reportsPath=test/report/junit 

Tells SonarQube that the code coverage tool by unit tests is JaCoCo 
sonar.java.coveragePlugin=jacoco 

Import JaCoCo code coverage report. 
Tells SonarQube where the unit tests code coverage report is 
Unit Tests Coverage 
sonar.jacoco.reportPath=target/jacoco.exec 

Tells SonarQube where the integration tests code coverage report is 
sonar.jacoco.itReportPath=target/it-jacoco.exec 

Это файл регистрации с гидролокатора бегуна:

13:56:05.883 INFO - Sensor SurefireSensor... 
13:56:05.883 INFO - parsing C:\work\snapshots\steffen_latest\software\java\test\report\junit 
13:56:06.149 INFO - Sensor SurefireSensor done: 266 ms 
13:56:06.149 INFO - Sensor JaCoCoItSensor... 
13:56:06.195 INFO - Analysing C:\work\snapshots\steffen_latest\software\java\target\it-jacoco.exec 
13:56:06.726 INFO - **No information about coverage per test**. 
13:56:06.726 INFO - Sensor JaCoCoItSensor done: 577 ms 
13:56:06.726 INFO - Sensor JaCoCoOverallSensor... 
13:56:06.851 INFO - Analysing C:\work\snapshots\steffen_latest\software\java\.sonar\jacoco-overall.exec 
13:56:07.178 INFO - **No information about coverage per test**. 
13:56:07.178 INFO - Sensor JaCoCoOverallSensor done: 452 ms 
13:56:07.178 INFO - Sensor JaCoCoSensor... 
13:56:07.209 INFO - Analysing C:\work\snapshots\steffen_latest\or_base\software\java\target\jacoco.exec 
13:56:07.521 INFO - **No information about coverage per test**. 
13:56:07.521 INFO - Sensor JaCoCoSensor done: 343 ms 
13:56:07.521 INFO - Sensor CPD Sensor (wrapped)... 
13:56:07.521 INFO - JavaCpdEngine is used for java 
13:56:07.521 INFO - Cross-project analysis disabled 
13:56:09.019 INFO - Sensor CPD Sensor (wrapped) done: 1498 ms 
13:56:09.144 INFO - Execute decorators... 
13:56:16.166 INFO - Store results in database 

Может кто-нибудь дать мне совет, что может быть проблема? Поскольку я не знаю, в чем проблема ... Я работаю над этим вопросом с нескольких дней, и я действительно не знаю, что делать.

Спасибо заранее.

+2

Охват за тест - это информация сверху покрытия. Охват за тест - это информация о том, какой тест охватывает какой файл. (в то время как освещение только информирует вас о том, какие линии были охвачены испытаниями). Поэтому, пожалуйста, проясните свой вопрос на основе этой информации, так как сообщение «Нет информации о покрытии на тест» сообщает нам, что вы не использовали ни одного слушателя, чтобы сбрасывать сеансы jacoco между каждым тестом. – benzonico

+0

Спасибо за подсказку. Проблема заключалась в том, что мы не использовали ни одного слушателя, чтобы сбрасывать сеансы jacoco между каждым тестом. – Stelos10

+1

Есть ли вероятность опубликовать, как вы это настроили? У меня такая же проблема –

ответ

2

Вы пытались использовать prepare-agent?

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install 

Кроме того, если ваш охват продолжает показывать 0%, то, возможно, необходимо следовать this advice:

Если ваш проект уже использует argLine для настройки безошибочный-Maven-плагин, убедитесь, что argLine определяется как свойство, а не как часть конфигурации плагина «

-3

Убедитесь дробить сборки и анализа двух различных этапов сборки:.

mvn clean install 

mvn sonar:sonar 
0

В моем случае ниже действуют команды.

mvn clean org.jacoco:jacoco-maven-plugin:0.7.3.201502191951:prepare-agent install 
mvn sonar:sonar 

Чтобы проверить покрытие кода: Start сервер SonarQube -> Выполнить выше двух команд один за другим & вы увидите покрытие кода в SonarQube Client.

SonarQube Code Coverage

FYI: Моя SonarQube версия - 5.1.2.Вы можете скачать последнюю версию от SonarQube Download

0

Я использую JUnit, а также в моем случае проблема связана с наличием зависимости TestNG в моем pom.xml. После устранения этой ненужной зависимости все стало работать должным образом.

Смежные вопросы