Тестирование JUnit groovy-скриптов приводит к «неспособности разрешить класс» из тестового файла JUnit, который пытается протестировать другой groovy-скрипт - PullRequest
2 голосов
/ 12 сентября 2011

Я запускаю groovy, встраивая его в приложение Java с помощью следующего кода:

GroovyScriptEngine gse = null;
  try {
  //note that roots is properly defined above i just didn't include it in this example so that it
  //remains concise 
     gse = new GroovyScriptEngine(roots);
  } catch (IOException ex) {
     Logger.getLogger(GroovyWrapper.class.getName()).log(Level.SEVERE, null, ex);
  }

Теперь у меня есть еще один скрипт groovy с приведенным ниже кодом (который я выполняю по нажатию кнопки).Код снова упрощен, но работает правильно, и запущенный скрипт может без проблем увидеть и использовать файл, который я пытаюсь проверить JUnit:

GroovyScriptEngine gse = new GroovyScriptEngine(roots);
gse.run(relativeScriptName, binding);

Выполненный мной скрипт имеет следующий код:

class AllTests extends TestSuite {
   static TestSuite suite() {
      TestSuite suite = new TestSuite();
      GroovyTestSuite gsuite = new GroovyTestSuite();

         suite.addTestSuite(gsuite.compile("LibraryTest.groovy"));

      return suite;
   }
}

TestRunner.run(AllTests.suite())

Теперь, что я замечаю, так это то, что даже приведенный выше скрипт (AllTests) может импортировать и использовать файл, который я хочу тестировать JUnit, но сам тест JUnit завершается неудачно с исключением «не удается разрешить класс», когдаTestRunner выше запускает тест JUnit.И это не удается, когда я просто импортирую класс.Тест JUnit, который я запускаю, кратко изложен ниже:

package lib

import groovy.util.GroovyTestCase
import lib.Dictionary;

class LibraryTest extends GroovyTestCase {


   public void testSomething() {
      assert 1 == 1
      assert 2 + 2 == 4 : "We're in trouble, arithmetic is broken"
   }

}

Обратите внимание, что тест JUnit проходит и работает правильно, если я не импортирую класс, который хочу протестировать.Но тест JUnit не очень полезен для меня, если я не могу использовать его для тестирования других классных классов и сценариев.

Есть мысли?

1 Ответ

2 голосов
/ 12 сентября 2011

Хорошо, я понял проблему. По какой-то причине мне нужно скомпилировать все скрипты groovy, которые будут использовать мои тесты, даже если мне не нужно компилировать ни один из них, если я просто вызываю их с использованием groovy (то есть стандартного использования groovy). Я надеюсь, что это сэкономит другим людям время на отладку. Для компиляции файла просто используйте

gsuite.compile("<file name>");

в моем коде выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...