2010-02-24 2 views
1

Я пытаюсь создать очень простой плагин eclipse.Проблема с использованием JUnit4TestAdapter из контекста плагина eclipse

Я хочу запустить текущий выбранный тестовый пример, используя мой инструмент с помощью JUnit4TestAdapter.

Когда я бегу снаружи затмения, используя «главное» с «параметрами», все просто прекрасно.

Когда я взываю «главный» с теми же «параметрами» внутри затмения (я создаю отдельный поток для этого вызова), я получаю следующее исключение:

java.lang.Exception: No runnable methods 
at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:171) 
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:115) 
at org.junit.runners.ParentRunner.validate(ParentRunner.java:269) 
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:66) 
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:59) 
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) 
at junit.framework.JUnit4TestAdapter.<init>(JUnit4TestAdapter.java:31) 
at junit.framework.JUnit4TestAdapter.<init>(JUnit4TestAdapter.java:24) 
at util.JUnitTestRunner.runTest(JUnitTestRunner.java:26) 
at master.Master.runTests(Master.java:180) 
at master.Master.runTestsWithEquivalenceAnalysis(Master.java:207) 
at master.Master.runInitialTests(Master.java:132) 
at master.Master.run(Master.java:102) 
at master.Master.runMutationTesting(Master.java:49) 

Любая идея, что на самом деле собирается неправильно? Почему BlockJUnit4ClassRunner решает выбросить исключение при запуске за пределами затмения, он просто отлично справляется с данным тестом? Btw, фактическим тестом являются JUnit 3.8 (в отличие от JUnit4)

ответ

3

«Нет методов runnable» указывает, что JUnit не смог найти никаких проверяемых методов. Для JUnit 3 это методы, начинающиеся с testXXX(); для JUnit 4 это методы, аннотированные с помощью @Test.

JUnit не запускает «основные» методы, если вы не используете JUnit 4, а основной метод содержит аннотацию (это довольно плохой стиль).

Если ваши методы имеют эти правильные аннотации, а Eclipse все еще бросает одно и то же исключение, это может быть результатом более глубокой проблемы с путём или конфигурацией класса.

+0

Спасибо! «Более глубокая проблема с classpath или configuration» обычно имеет другую версию JUnit где-то в вашем пути к классам через (косвенную) зависимость. – vorburger

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