2016-05-11 4 views
1

У меня есть некоторые проблемы с подключением JUnit к работе с использованием Eclipse Neon M7, и мне бы очень хотелось, чтобы кто-нибудь из них использовал тесты (должно быть кто-то, правильно?).JUnit Plug-in Test Игнорирует целевую платформу в Eclipse Neon

Всякий раз, когда я начинаю тест, который работает в Eclipse, Luna (но didn't in Mars, который я предположил был баг) и продолжает работать, используя Tycho я получаю следующее исключение:

!SESSION 2016-05-11 10:25:41.456 ----------------------------------------------- 
eclipse.buildId=unknown 
java.version=1.8.0_73 
java.vendor=Oracle Corporation 
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US 
Framework arguments: -version 3 -port 60297 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames org.acme.test.test.core.ActivatorTest -application org.eclipse.pde.junit.runtime.uitestapplication -testApplication org.eclipse.ui.ide.workbench -testpluginname test.core 
Command-line arguments: -os win32 -ws win32 -arch x86 -consoleLog -version 3 -port 60297 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames org.acme.test.test.core.ActivatorTest -application org.eclipse.pde.junit.runtime.uitestapplication -testApplication org.eclipse.ui.ide.workbench -data C:\workspaces\MyWorkspace/../junit-workspace -dev file:C:/workspaces/MyWorkspace/.metadata/.plugins/org.eclipse.pde.core/pde-junit/dev.properties -os win32 -ws win32 -arch x86 -consoleLog -testpluginname test.core 

!ENTRY org.eclipse.pde.junit.runtime 4 0 2016-05-11 10:25:42.373 
!MESSAGE FrameworkEvent ERROR 
!STACK 0 
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.pde.junit.runtime [81] 
    Unresolved requirement: Require-Bundle: org.eclipse.core.runtime; bundle-version="[3.11.0,4.0.0)" 

    at org.eclipse.osgi.container.Module.start(Module.java:434) 
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582) 
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561) 
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533) 
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476) 
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) 
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) 

!ENTRY org.eclipse.pde.junit.runtime 2 0 2016-05-11 10:25:42.719 
!MESSAGE Could not resolve module: org.eclipse.pde.junit.runtime [81] 
    Unresolved requirement: Require-Bundle: org.eclipse.core.runtime; bundle-version="[3.11.0,4.0.0)" 


!ENTRY org.eclipse.osgi 4 0 2016-05-11 10:25:42.720 
!MESSAGE Application error 
!STACK 1 
java.lang.RuntimeException: Application "org.eclipse.pde.junit.runtime.uitestapplication" could not be found in the registry. The applications available are: org.eclipse.ant.core.antRunner, org.eclipse.ui.ide.workbench, org.eclipse.help.base.infocenterApplication, org.eclipse.help.base.helpApplication, org.eclipse.help.base.indexTool, org.acme.test.rxp.rxpdemo, org.eclipse.equinox.app.error. 
    at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:248) 
    at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:236) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) 
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) 
    at org.eclipse.equinox.launcher.Main.run(Main.java:1410) 
    at org.eclipse.equinox.launcher.Main.main(Main.java:1386) 

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

По-прежнему в конфигурации запуска используется более поздняя целевая платформа.

Как настроить тестовый модуль, чтобы он принимал активную целевую платформу?

+0

Является ли ваша целевая платформа основанной на Eclipse 3.7/8? Я столкнулся с аналогичной проблемой, когда моя версия dev и целевой платформы была другой, и я попытаюсь вычислить, что я сделал, чтобы решить эту проблему. –

+0

@JonahGraham Да, это Eclipse 3.7 и так заметно старше Eclipse Neon. Пожалуйста, выкопайте решение проблемы: –

+0

Я не могу воспроизвести проблему и, следовательно, решение. Я представил свои заметки в качестве ответа в надежде, что это поможет вам немного. –

ответ

1

Проблема здесь состоит в том, что Eclipse, 4,4 (Luna, 2014) и ниже была версия org.eclipse.core.runtime, которая была совместима с принимающей Затмения версии org.eclipse.pde.junit.runtime. Это изменилось с 4.5, когда зависимость увеличилась.

Как вы правильно пришли к выводу, что конфигурация указывает на неправильные org.eclipse.pde.junit.runtime. Вероятно, это связано с нечистым состоянием конфигурации. Убедитесь, что конфигурация очищается, поэтому вы не запускаете устаревшую версию. Это гарантирует, что Очистить область конфигурации до запуска проверяется на вкладке конфигурации Конфигурация.

Вы можете увидеть именно то, что PDE рассосалась как сконфигурированные пучки, посмотрев на $ {workspace_loc} /. Метаданные/.plugins/org.eclipse.pde.core/PDE-JUnit/org.eclipse.equinox.simpleconfigurator /bundles.info (местоположение указано в Конфигурация вкладка конфигурации запуска)

+0

Как «Очистить данные рабочей области», так и «Очистить область конфигурации перед запуском» по умолчанию проверяется, поэтому я ничего не могу изменить. Почему он даже использует любую другую версию, кроме той, что находится на целевой платформе рабочего пространства? И у нас нет 'simpleconfigurator' на наших целевых платформах по умолчанию, но если это проблема, я попытаюсь добавить ее. –

+0

«simpleconfigurator» помог мне понять, что моя целевая платформа отсутствовала «org.eclipse.pde.junit.runtime», и поэтому Eclipse использовала ее в своей подключаемой папке по какой-то странной причине. –

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