Я запускаю 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 не очень полезен для меня, если я не могу использовать его для тестирования других классных классов и сценариев.
Есть мысли?