2017-01-13 5 views
0

Я использую версию evosuite 1.0.3. Я могу успешно сгенерировать тестовые классы, а project_info.xml показывает 0.75 как покрытие кода, которое составляет всего 75% (0,75 * 100).код покрытия evosuite не совпадает с покрытием jacoco

Но когда я включил инструмент покрытия кода Jacoco, я не вижу 75% покрытия. Он показывает только 13%. Что может быть причиной этого?

Ниже представлен вывод, когда я выпустил mvn evosuite: info.

[INFO] Общее количество классов в проекте: 12

[INFO] Количество классов в проекте, которые тестируемый: 12

[INFO] Количество генерируемых тестовых наборов: 10

[INFO] Общий охват: 0.7541666666666665

Не должен ли я видеть покрытие в отчете о jacoco также как 75% в качестве общего покрытия? Пожалуйста помоги.

ответ

0

Без Minimal, Complete, and Verifiable example трудно сказать точную причину и предложить что-то точное, чтобы решить вашу проблему, однако цитирование EvoSuite documentation about code coverage:

... класс под тест (CUT) должен быть инструментальными, т.е. его байткодом должен быть изменен.

К сожалению, эти модификации байт-кода могут конфликтовать с инструментами байт-кода, выполненными с помощью инструментов, используемых для измерения покрытия кода (например, JaCoCo, EclEmma, ​​Cobertura, Clover и JMockit). Так что вполне может оказаться, что вы получите покрытие кода 0% ...

В то же время, если вы получаете 0% охвата, вы можете попробовать ...

Также есть два режима JaCoCo - так называемое «на лету» инструментальное средство с Java-агентом, которое рекомендуется по умолчанию, и так называемое «автономное» оборудование без агента. В отсутствие примера неясно, как JaCoCo запускается в вашем случае, однако, в дополнение к обходным на странице документации EvoSuite возможно JaCoCo «форума» инструментовка может помочь - цитировал JaCoCo documentation about offline instrumentation:

Одним из главных преимуществ JaCoCo является Java-агент, который быстро набирает классы. Это упрощает анализ покрытия кода, так как не требуется предварительная подготовка инструментария и настройка класса. Однако могут возникнуть ситуации, когда на лету приборы не подходит, например:

  • ...
  • Конфликты с другими агентами, которые делают динамическое преобразование файлов классов.

Для таких сценариев файлы классов могут быть предварительно инструментованных с JaCoCo ...