2011-11-02 2 views
0

У меня есть несколько GWTTestCases в моем наборе тестов, и я в настоящее время с помощью доморощенного тестирования скрипта, который написан на Java, которая проходит испытания следующим образом:Запуск GWT 2.4 Тестов с JUnitCore

for(Class<?> testClass : allTestClasses) { 
    final JUnitCore core = new JUnitCore(); 
    final Result result = core.run(testClass); 
} 

Теперь первый Тест GWT пройдет, и все последующие тесты потерпят неудачу. Не имеет значения, какой тест запускается первым, и я могу успешно выполнить тесты из командной строки.

Просматривая журналы, конкретная ошибка, как правило, нравится:

java.lang.RuntimeException: deepthought.test.JUnit:package.GwtTestCaseClass.testMethod: could not instantiate the requested class 

Я думаю, что это что-то делать с GWTTestCase статическом состоянии, но не уверен. Если я сделаю один проход, где я передаю все тестовые классы в ядро, все они пройдут, а затем последует любой отдельный тест.

Я предполагаю, что gwt собирает и кэширует те тесты, которые вы запускаете, а затем сохраняет их на основе модуля. Но в этом случае компилятор пропускает мои другие тестовые примеры, потому что он не видит зависимости от них. Затем для следующего теста он возвращается в кэш, попадает в него и не может найти тест, который я хочу.

Любые мысли об обходном пути, кроме как просто прохождения всех тестов одновременно?

ответ

1

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

Если вы спросите меня, это ошибка GWT.

+0

http://code.google.com/p/google-web-toolkit/issues/detail?id=5138 –

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