私は、1 つのプラグイン バンドルと単体テスト用のバンドル フラグメントを使用して Eclipse 4 RCP プロジェクトに取り組んでいます。ターゲット プラットフォームは、Eclipse ターゲット定義 (.target ファイル) で定義されます。Maven with Tycho を使用して、Eclipse の外部でプロジェクトをビルドします (ターゲット プラットフォームを定義する .target ファイルを使用したマニフェスト ファースト)。
ここで、モッキング用のターゲット プラットフォームに Mockito を含めたいと思います。Eclipse Orbit は org.mockito (1.9.5) バンドルを提供します。これは特に org.hamcrest (Orbit p2 サイトにもあります) に依存しているため、ターゲット定義にも追加しました。ターゲット ファイルから Eclipse のターゲット プラットフォームを設定すると、[ターゲット プラットフォームの状態] ビューに次のように表示されます。
org.hamcrest.library と org.hamcrest.core の両方が存在しますが (どちらのバンドルも org.hamcrest 1.3.0 パッケージをエクスポートします)、org.mockito バンドルは org.hamcrest パッケージがないと主張しています。
それにもかかわらず、MANIFEST.MF のテスト プラグイン フラグメントの依存関係に org.mockito と org.hamcrest.library を追加しました。
Require-Bundle: org.junit;bundle-version="4.11.0",
org.hamcrest.library;bundle-version="1.3.0",
org.mockito;bundle-version="1.9.5"
フラグメントはコンパイルされているようですが、テストを実行できません。tycho-surefire-plugin レポート:
An error has occurred. See the log file [...]\target\work\configuration\1405514016520.log.
ログファイルは次のとおりです。
!SESSION 2014-07-16 14:33:34.053 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.7.0_55
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Framework arguments: -application org.eclipse.tycho.surefire.osgibooter.headlesstest -testproperties F:\Users\Jakob\Documents\Bachelorprojekt\Code\myplugin.tests\target\surefire.properties
Command-line arguments: -data F:\Users\Jakob\Documents\Bachelorprojekt\Code\myplugin.tests\target\work\data -application org.eclipse.tycho.surefire.osgibooter.headlesstest -testproperties F:\Users\Jakob\Documents\Bachelorprojekt\Code\myplugin.tests\target\surefire.properties
!ENTRY org.eclipse.osgi 2 0 2014-07-16 14:33:40.508
!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.508
!MESSAGE Bundle initial@reference:file:../../../../../../.m2/repository/p2/osgi/bundle/org.eclipse.swt.gtk.linux.x86_64/3.102.1.v20130827-2048/org.eclipse.swt.gtk.linux.x86_64-3.102.1.v20130827-2048.jar was not resolved.
!SUBENTRY 2 org.eclipse.swt.gtk.linux.x86_64 2 0 2014-07-16 14:33:40.508
!MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(|(&(osgi.ee=CDC/Foundation)(version=1.0))(&(osgi.ee=JavaSE)(version=1.3)))".
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.508
!MESSAGE Bundle initial@reference:file:../../../../../../.m2/repository/p2/osgi/bundle/org.eclipse.swt.cocoa.macosx.x86_64/3.102.1.v20130827-2048/org.eclipse.swt.cocoa.macosx.x86_64-3.102.1.v20130827-2048.jar was not resolved.
!SUBENTRY 2 org.eclipse.swt.cocoa.macosx.x86_64 2 0 2014-07-16 14:33:40.508
!MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(|(&(osgi.ee=CDC/Foundation)(version=1.0))(&(osgi.ee=JavaSE)(version=1.3)))".
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.508
!MESSAGE Bundle initial@reference:file:../../../../../../.m2/repository/p2/osgi/bundle/org.mockito/1.9.5.v201311280930/org.mockito-1.9.5.v201311280930.jar was not resolved.
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.509
!MESSAGE Missing imported package org.hamcrest_[1.0.0,2.0.0).
!ENTRY org.eclipse.osgi 2 0 2014-07-16 14:33:40.547
!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.547
!MESSAGE Bundle myplugin.tests_0.0.1.qualifier [2] was not resolved.
!SUBENTRY 2 myplugin.tests 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing required bundle org.mockito_1.9.5.
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.547
!MESSAGE Bundle org.mockito_1.9.5.v201311280930 [5] was not resolved.
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing optionally imported package COM.jrockit.reflect_0.0.0.
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing optionally imported package jrockit.vm_0.0.0.
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing imported package org.hamcrest_[1.0.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing imported package org.mockito_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing imported package org.mockito.configuration_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing imported package org.mockito.exceptions_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing imported package org.mockito.exceptions.base_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing imported package org.mockito.exceptions.misusing_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing imported package org.mockito.exceptions.stacktrace_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.547
!MESSAGE Missing imported package org.mockito.exceptions.verification_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing imported package org.mockito.exceptions.verification.junit_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing imported package org.mockito.invocation_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing imported package org.mockito.listeners_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing imported package org.mockito.mock_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing imported package org.mockito.plugins_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing imported package org.mockito.runners_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing imported package org.mockito.stubbing_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing imported package org.mockito.stubbing.answers_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing imported package org.mockito.verification_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing optionally imported package sun.reflect_0.0.0.
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.548
!MESSAGE Bundle org.eclipse.swt.gtk.linux.x86_64_3.102.1.v20130827-2048 [147] was not resolved.
!SUBENTRY 2 org.eclipse.swt.gtk.linux.x86_64 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(|(&(osgi.ee=CDC/Foundation)(version=1.0))(&(osgi.ee=JavaSE)(version=1.3)))".
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.548
!MESSAGE Bundle org.eclipse.swt.cocoa.macosx.x86_64_3.102.1.v20130827-2048 [148] was not resolved.
!SUBENTRY 2 org.eclipse.swt.cocoa.macosx.x86_64 2 0 2014-07-16 14:33:40.548
!MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(|(&(osgi.ee=CDC/Foundation)(version=1.0))(&(osgi.ee=JavaSE)(version=1.3)))".
!ENTRY org.eclipse.osgi 2 0 2014-07-16 14:33:40.804
!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.804
!MESSAGE Bundle initial@reference:file:../../../../../../.m2/repository/p2/osgi/bundle/org.eclipse.swt.gtk.linux.x86_64/3.102.1.v20130827-2048/org.eclipse.swt.gtk.linux.x86_64-3.102.1.v20130827-2048.jar was not resolved.
!SUBENTRY 2 org.eclipse.swt.gtk.linux.x86_64 2 0 2014-07-16 14:33:40.804
!MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(|(&(osgi.ee=CDC/Foundation)(version=1.0))(&(osgi.ee=JavaSE)(version=1.3)))".
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.804
!MESSAGE Bundle initial@reference:file:../../../../../../.m2/repository/p2/osgi/bundle/org.eclipse.swt.cocoa.macosx.x86_64/3.102.1.v20130827-2048/org.eclipse.swt.cocoa.macosx.x86_64-3.102.1.v20130827-2048.jar was not resolved.
!SUBENTRY 2 org.eclipse.swt.cocoa.macosx.x86_64 2 0 2014-07-16 14:33:40.804
!MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(|(&(osgi.ee=CDC/Foundation)(version=1.0))(&(osgi.ee=JavaSE)(version=1.3)))".
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.804
!MESSAGE Bundle initial@reference:file:../../../../../../.m2/repository/p2/osgi/bundle/org.mockito/1.9.5.v201311280930/org.mockito-1.9.5.v201311280930.jar was not resolved.
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.804
!MESSAGE Missing imported package org.hamcrest_[1.0.0,2.0.0).
!ENTRY org.eclipse.osgi 2 0 2014-07-16 14:33:40.833
!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.833
!MESSAGE Bundle myplugin.tests_0.0.1.qualifier [2] was not resolved.
!SUBENTRY 2 myplugin.tests 2 0 2014-07-16 14:33:40.833
!MESSAGE Missing required bundle org.mockito_1.9.5.
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.833
!MESSAGE Bundle org.mockito_1.9.5.v201311280930 [5] was not resolved.
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.833
!MESSAGE Missing optionally imported package COM.jrockit.reflect_0.0.0.
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.833
!MESSAGE Missing optionally imported package jrockit.vm_0.0.0.
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.833
!MESSAGE Missing imported package org.hamcrest_[1.0.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.834
!MESSAGE Missing imported package org.mockito_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.834
!MESSAGE Missing imported package org.mockito.configuration_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.834
!MESSAGE Missing imported package org.mockito.exceptions_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.834
!MESSAGE Missing imported package org.mockito.exceptions.base_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.834
!MESSAGE Missing imported package org.mockito.exceptions.misusing_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.834
!MESSAGE Missing imported package org.mockito.exceptions.stacktrace_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.834
!MESSAGE Missing imported package org.mockito.exceptions.verification_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.834
!MESSAGE Missing imported package org.mockito.exceptions.verification.junit_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.834
!MESSAGE Missing imported package org.mockito.invocation_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.834
!MESSAGE Missing imported package org.mockito.listeners_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.835
!MESSAGE Missing imported package org.mockito.mock_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.835
!MESSAGE Missing imported package org.mockito.plugins_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.835
!MESSAGE Missing imported package org.mockito.runners_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.835
!MESSAGE Missing imported package org.mockito.stubbing_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.835
!MESSAGE Missing imported package org.mockito.stubbing.answers_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.835
!MESSAGE Missing imported package org.mockito.verification_[1.9.0,2.0.0).
!SUBENTRY 2 org.mockito 2 0 2014-07-16 14:33:40.835
!MESSAGE Missing optionally imported package sun.reflect_0.0.0.
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.835
!MESSAGE Bundle org.eclipse.swt.gtk.linux.x86_64_3.102.1.v20130827-2048 [147] was not resolved.
!SUBENTRY 2 org.eclipse.swt.gtk.linux.x86_64 2 0 2014-07-16 14:33:40.835
!MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(|(&(osgi.ee=CDC/Foundation)(version=1.0))(&(osgi.ee=JavaSE)(version=1.3)))".
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-16 14:33:40.835
!MESSAGE Bundle org.eclipse.swt.cocoa.macosx.x86_64_3.102.1.v20130827-2048 [148] was not resolved.
!SUBENTRY 2 org.eclipse.swt.cocoa.macosx.x86_64 2 0 2014-07-16 14:33:40.835
!MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(|(&(osgi.ee=CDC/Foundation)(version=1.0))(&(osgi.ee=JavaSE)(version=1.3)))".
!ENTRY org.eclipse.osgi 4 0 2014-07-16 14:33:40.857
!MESSAGE Application error
!STACK 1
java.lang.RuntimeException: Bundle myplugin.tests is not found
at org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.getBundleClassLoader(OsgiSurefireBooter.java:149)
at org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:67)
at org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.run(HeadlessTestApplication.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Eclipse PDE からプラグイン テストを起動すると、実際には同じ mockito 関連のエラーが発生します (SWT 関連のエラーはありませんが、代わりに他のバンドル解決エラーがあります。これは、通常、これらのテストを Eclipse から実行することはなく、競合するバンドルをいくつか削除していないためです。起動構成)。
パッケージが別の必要なバンドルによってターゲット プラットフォームから確実にエクスポートされているにもかかわらず、インポートされたパッケージが見つからないというエラーの考えられる原因は何ですか? また、このセットアップを修正するにはどうすればよいですか?