У меня есть тестовый проект Maven для моего приложения.
Тесты JUnit работают нормально, и тест покрытия кода тоже.
Но отчет всегда показывает 0% покрытия кода.
Что я должен делать?
У меня есть тестовый проект Maven для моего приложения.
Тесты JUnit работают нормально, и тест покрытия кода тоже.
Но отчет всегда показывает 0% покрытия кода.
Что я должен делать?
Согласно официальному сайту, Eclemma — это плагин покрытия кода для Eclipse, основанный на библиотеке JaCoCo.
Поскольку вы хотите использовать тот же механизм покрытия кода за пределами eclipse, вам следует включить подключаемый модуль Jacoco. внутри конфигурации Maven (pom) вашего проекта следующим образом (этот код был скопирован из блога Agile Engineering):
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.0.201210061924</version>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Чтобы запустить тесты, просто введите в командной строке следующее:
mvn clean test
PS: вы также можете использовать другие плагины покрытия кода, такие как Cobertura или Эмма.
На всякий случай, если вы забыли сделать это:
Я не уверен, в чем причина проблемы, потому что это всегда работало для меня. Вы установили его из самого затмения? Попробуйте удалить его и переустановить из eclipse. Вот как это сделать на всякий случай:
Теперь я понял, что вы просто хотите получить отчет, используя инструмент внутри Eclipse...
Каково покрытие кода в диалоговом окне Eclipse? Вы пытались использовать щелчок правой кнопкой мыши в этом диалоговом окне, чтобы экспортировать сеанс (отчет) или внутри Файл -> Экспорт?
Это известная проблема уже много лет, и, к сожалению, для нее пока нет официального решения.
Вы можете увидеть это здесь, здесь и здесь
Одним из не очень удачных решений может быть использование eCobertura (или понижение версии eclemma с 2.x до 1. Икс)
Если вы используете eclemma, вам нужно добавить зависимость от jacoco. если jacoco был добавлен, но по-прежнему сталкиваетесь с этой проблемой, обратитесь к часто задаваемым вопросам по eclemma : "Почему класс отображается как незадействованный, хотя он был выполнен?"
это говорит,
Сначала убедитесь, что данные выполнения были собраны. Для этого выберите ссылку «Сеансы» в правом верхнем углу HTML-отчета и проверьте, указан ли рассматриваемый класс. Если он указан, но не связан, класс во время выполнения является другим файлом класса. Убедитесь, что вы используете тот же файл класса во время выполнения, что и для создания отчета. Обратите внимание, что некоторые инструменты (например, контейнеры EJB, фиктивные фреймворки) могут изменять ваши файлы классов во время выполнения.
Итак, Mockito/PowerMockito может вызвать эту проблему. В моем случае я добавил класс в @PrepareForTest(). Мне показали, что тестовый пример был выполнен нормально, без ошибок, но Jacoco не улучшила покрытие кода в своем отчете.
Наконец, удаление класса из аннотации @PrepareForTest() улучшило охват кода. проверьте, добавили ли вы его или нет, и удалите его из аннотации, если он добавлен.
Я только что столкнулся с этой проблемой, и она была вызвана неправильно настроенным путем к классам. Когда модульные тесты выполнялись, они выполнялись для скомпилированного jar (фактического источника, скомпилированного вне eclipse), а не для моего фактического исходного кода. После удаления jar из моего пути к классам модульные тесты правильно попали в мой источник пакета.
Я смог решить проблему на своем, вызвав экземпляр класса в верхней части тестовых примеров. то есть
public hotelOccupancy hotel = new hotelOccupancy();
@Test
public void testName() {
// some test here
}
Как только я это сделал, все мои страховки начали работать, и проблемы были решены.
Я использую eclemma 2.3.2, и он отлично работает с eclipse.
Мне нужно только добавить эти зависимости в мой pom.xml
<dependency>
<groupId>org.jboss.arquillian.extension</groupId>
<artifactId>arquillian-jacoco</artifactId>
<version>1.0.0.Alpha6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.core</artifactId>
<version>0.7.1.201405082137</version>
<scope>test</scope>
</dependency>
Затем я создаю проект, обновляю конфигурацию проектов maven и запускаю плагин покрытия, как и ожидалось.