2017-02-08 6 views
1

Я пытаюсь запустить некоторые JUnit 4 тестов из плагиных Затмения, но я только получаю следующий отказ:не удается запустить тест JUnit из Eclipse Plugin

initializationError (testpkg.TestClass): Нет работоспособный методы

класс тест очень прост:

package testpkg; 
(...) 
public class TestClass { 
    @Test 
    public void test() { 
     System.out.println("Test run"); 
     Assert.assertTrue(true); 
    } 
} 

Когда я запускаю его программно в простой проект Java, он работает, но не в плагин Eclipse:

public class DiscoverHandler extends AbstractHandler { 
     @Override 
     public Object execute(ExecutionEvent event) throws ExecutionException { 
      (...) 
      File file = new File("C:(...)\\target\\test-classes"); //The .class file 
      URLClassLoader classLoader = new URLClassLoader(new URL[] file.toURI().toURL()}); 
      JUnitCore.runClasses(classLoader.loadClass("testpkg.TestClass")).getFailures().forEach(c -> System.out.println(c.toString())); 
     } 
    } 

Тот же код в простом Java-проекте фактически напечатает строку «Пробег тестирования».

Кто-нибудь знает, откуда эта ошибка? Спасибо

+0

Когда вы отлаживаете свой код: он как плагин находит класс? Иногда у меня возникали проблемы с плагинами из плагинов. – IQV

+0

Да, используя File.exists() или даже ClassLoader.loadClass ("testpkg.TestClass") вернет правильный объект класса с помощью метода test(). Кроме того, я смог запустить тестовую конфигурацию с помощью \t \t \t \t \t DebugPlugin.getDefault(). GetLaunchManager(). GetLaunchConfigurations() [1] .launch (org.eclipse.debug.core.ILaunchManager.RUN_MODE, нуль); Но это не то, что я хочу –

ответ

0

я, наконец, удалось сделать это, делая это:

URLClassLoader classLoader = new URLClassLoader(new URL[]{file.toURI().toURL()}, this.getClass().getClassLoader()); 

Вместо этого:

URLClassLoader classLoader = new URLClassLoader(new URL[] file.toURI().toURL()}); 

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

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