Сложность выполнения тестов Grails в IntelliJ: незаконное использование невиртуального вызова функции
В последнее время я пытался запустить свои тесты на спок в IntelliJ (который раньше работал прекрасно и имел отличную отладку / специфический тест повторного запуска на функциях сбоев), и в последние несколько месяцев я начал получать следующую ошибку:
| Error Error executing script TestApp:
(class: com/company/MyServiceSpec, method: super$2$oldImpl signature:
(Ljava/lang/Object;)Ljava/lang/Object;)
Illegal use of nonvirtual function call (Use --stacktrace to see the full trace)
Это тест на спок, который отлично работает из командной строки, индивидуально (с указанием класса) или во всей серии тестовых приложений. Практически все спок и обычные тесты модулей или интеграций, которые я проводил в этом проекте, дают схожие сбои в IntelliJ.
Я попытался изменить функции запуска теста (включив или выключив путь к классам, запустив отдельный метод, целый класс тестов или всю серию тестов), но безуспешно, чтобы исправить ситуацию. Я также сделал grails clean
и попытался повторно запустить их из IntelliJ: это выглядело так, как будто это работало один раз, и я смог запустить тесты некоторое время, но затем быстро после выполнения некоторой работы проблема теперь сохраняется.
Я знаю, что это немного расплывчатый вопрос, но кто-нибудь видел подобные ошибки и нашел надежное средство? Я на Grails 2.1 и Spock 0.7, та же проблема в IntelliJ 12 и 13
2 ответа
Мне удалось решить эту проблему, добавив в мою конфигурацию следующую переменную env:
_JAVA_OPTIONS='-Xverify:none'
Сначала проверьте свои конфигурации и очистите тест, который вы выполнили и который сейчас не проходит. Возможно, вы запускали тесты как JUnit, и теперь, когда вы запускаете их снова, они по умолчанию используют это поведение.
Примечание. Вы можете определить, является ли это проблемой, запустив свои тесты из командной строки (например, модуль grails test-app com.yourPackage.Wh независимо), если они пройдут, как ожидалось, затем следуйте инструкциям ниже, чтобы очистить сохраненные конфигурации тестов в IntelliJ.
IntelliJ Steps
- Нажмите Run
- Нажмите Редактировать конфигурации
- На левой панели всплывающего окна щелкните стрелку, чтобы развернуть тесты jUnit.
- Далее Нажмите на тест, а затем нажмите значок минус (сделайте это для каждого, чтобы очистить их все)
- Перейдите к тесту, который вы хотите запустить, и щелкните его правой кнопкой мыши и убедитесь, что вы выбрали вариант Grails, а не jUnit.