2015-07-22 5 views
1

Я пытаюсь настроить отчет покрытия кода для нашего приложения Grails при выполнении модульных тестов на основе Spock. Я способен генерировать отчеты, но покрытие 0.Нулевое покрытие с IntelliJ IDEA: Grails с тестами модуля Spock

Я пытался играть с различными опциями (например, Sampling против Трассировка), но результаты всегда одинаковы: общее количество классов/методы/линии, показанные правильно, но покрытие всегда равно 0, например:

Класс,%: 0% (0/2)

Метод,%: 0% (0/4)

Линия,%: 0% (0/16)

Это явно подделка, поскольку соответствующий код может быть изменен таким образом, чтобы тесты не срабатывали.

начальной установки:

  • OS X Yosemite 10.10.2
  • IntelliJ IDEA 14.1.3 Окончательный
  • Grails 2.4.4
  • Спок 0,7
  • Groov у 2.4.3
  • Java 1.8.0-31

ответ

1

Я также столкнулся с аналогичной проблемы пару месяцев назад. Я использовал STS и написал тесты на основе Spock.

Плагин для покрытия кода, который вы используете, не рассматривает тестовые примеры Spock как реальные тестовые примеры. Он рассматривает только тестовые примеры JUinit.

Таким образом, решение здесь будет искать другой плагин для покрытия кода, совместимый с IntelliJ. Я не мог предложить вам плагин, который я использовал для STS, поскольку он может или не может работать хорошо для IntelliJ.

Надеюсь, по крайней мере, я дал понять, в чем проблема.

+0

Спасибо! Я отправил этот вопрос в поддержку JetBrains. Если они действительно подтвердят, что это проблема, я приму свой ответ. –

+0

Добро пожаловать в шотландию. –

+0

Получил ответ от JetBrains - отключение forking делает трюк –

2

я написал поддержку JetBrains, и они указали мне на следующий вопрос:

https://youtrack.jetbrains.com/issue/IDEA-137285

Короче говоря, разрешение указать

grails.project.fork = [ 
    test: false 
] 

в BuildConfig.groovy.

Кроме того, см. IntelliJ IDEA Debugger isn't working on a Grails Project - есть какая-то полезная информация там, когда/как/зачем использовать режим fork.

+0

Это существенно замедлит выполнение вашего тестового сценария в некоторых сценариях. После этого я столкнулся с проблемой медлительности. –

1

Сегодня я столкнулся с этой ошибкой.В итоге я обнаружил, что вы не должны использовать «запустить приложение с покрытием» на панели инструментов, но «Запустить» тест в «приложении» с «Покрытие» в контекстном меню проекта.

Когда вы запускаете тест в IntelliJ, в «Run/Debug Configurations» создается JUnit-тест, который можно использовать с панели инструментов (например, для повторного запуска).

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