Сложность выполнения тестов 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

  1. Нажмите Run
  2. Нажмите Редактировать конфигурации
  3. На левой панели всплывающего окна щелкните стрелку, чтобы развернуть тесты jUnit.
  4. Далее Нажмите на тест, а затем нажмите значок минус (сделайте это для каждого, чтобы очистить их все)
  5. Перейдите к тесту, который вы хотите запустить, и щелкните его правой кнопкой мыши и убедитесь, что вы выбрали вариант Grails, а не jUnit.
Другие вопросы по тегам