からJUnit4 + Hamcrest 1.3 + Mockitoを動作させるためにはどうすれば+ Mockito 2.8.47がEclipseので動作するようにJUnitの4.12 + Hamcrest 1.3を得ることができたので、私が追加したときにすることをそれらを依存するものとして、私のテストが実行されます。Eclipseとティコ
junit 4.12
org.mockito.mockito-core 2.8.47
- :
(私はこれをやった方法は、プラグイン/機能へのMaven Centralから次 アーティファクトをバンドルし、P2を経由してそれらを提供するためにp2-maven-pluginを使用しています
org.hamcrest.all 1.3.0
私のテストフラグメントにプラグインを依存関係として追加すると、 Eclipseで テストを実行します。
しかし、同じフラグメントのティコビルドが 次のメッセージで失敗します:
java.lang.LinkageError: loader constraint violation: loader (instance of org/eclipse/osgi/internal/loader/EquinoxClassLoader) previously initiated loading for a different type with name "org/hamcrest/Matcher"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.defineClass(ModuleClassLoader.java:273)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.defineClass(ClasspathManager.java:632)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:586)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:538)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:525)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:325)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:423)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:12)
at org.junit.Assert.assertThat(Assert.java:956)
at org.junit.Assert.assertThat(Assert.java:923)
だから、私のフラグメントがする前にいくつかの他のプラグインは、パッケージ org.hamcrest.Matcher
をロードしているようです。これはおそらく が、 JUnit/Hamcrest/Mockito設定を取り巻くインポート/エクスポート/部分インポート/部分エクスポートの混乱に起因すると考えられます。
誰もがアイデア持っています - またはより良い:作業例 - 3つのコンポーネントが中にチェックのために(テストを実行するかどうかのクイック チェックのため)、IDE内およびティコ(両方とも一緒に仕事を取得する方法のをビルド)?
私はMockito 2.8.47はすでにhamcrestを持っていると思います。 – want2learn
私はHamcrestとJUnitだけに依存するテスト・フラグメントでエラーを出します。 –
私は、あなたが問題の原因がJUnit/Hamcrest/Mockitoの輸出混乱であるという点では正しいと思います。 p2-maven-pluginは誤ったマニフェストを生成する可能性があります。問題を再現するための最小限のプロジェクトを追加できますか? –