2017-07-20 111 views
7

den JUnit4 + hamcrest 1.3 + mockito çalışması için nasıl + mockito 2.8.47Eclipse çalışmaya JUnit 4.12 + hamcrest 1.3 başardı ettik yüzden eklediğinizde o onları bağımlılıklar olarak testlerim çalışır.Eclipse VE Tycho

  • junit 4.12
  • org.mockito.mockito-core 2.8.47
  • :

    (Bunu yaptım yolu eklentileri/bir özellik haline Maven Central aşağıdaki eserler paket ve P2 aracılığıyla bunları sağlamak için p2-maven-plugin kullanıyor org.hamcrest.all 1.3.0

Eklentileri test bölümüme bağımlılıklar olarak ekleyerek testleri Eclipse'de çalışır.

Ancak, aynı parçanın Tycho inşa aşağıdaki mesajları ile başarısız olur:

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) 

Yani diğer bazı eklenti benim parçası yapar önce paket org.hamcrest.Matcheryükleniyor gibi görünüyor. Bu muhtemelen, JUnit/Hamcrest/Mockito kurulumunu çevreleyen içe/dışa aktarma/kısmi ithalat/kısmi ihracat kaoslarına 'dan kaynaklanmaktadır.

herkes bir fikri var mı - hatta daha iyi: bir çalışma örneği - üç bileşen sırasında kontroller için (ve Tycho (hızlı testler çalışıyor olmanıza çekler için) IDE içinde hem birlikte çalışmak almak nasıl bir yapı)?

+0

Bence Mockito 2.8.47 zaten hamcrest var. – want2learn

+0

Sadece Hamcrest ve JUnit üzerindeki bağımlılıkları olan bir test parçasında hata alıyorum. –

+0

Sanırım problemin kaynağı, JUnit/Hamcrest/Mockito'nun etrafındaki ihracat kaosudur. P2-maven eklentisinin yanıltıcı MANİFLER üretmesi muhtemeldir. Sorunu yeniden oluşturmak için minimum bir proje ekleyebilir misiniz? –

cevap

1

Yükleyicinin bağımlıları bir paket içinde olmasını ister.

Ama sanırım test kütüphanenizi bir pakete koymuyorsunuz.

Nasıl tepki verdiklerini görmek için bunları ürününüzün bağımlılıklarına eklemeyi deneyebilirsiniz.