2017-07-20 21 views
7

tôi đã quản lý để có được JUnit 4.12 + hamcrest 1.3 + Mockito 2.8.47 làm việc trong Eclipse để khi tôi thêm chúng như phụ thuộc, các bài kiểm tra của tôi sẽ chạy.Làm thế nào để làm cho Junit4 + hamcrest 1.3 + Mockito làm việc từ Eclipse VÀ Tycho

(Con đường tôi đã làm điều này là sử dụng p2-maven-plugin để bó hiện vật sau đây từ Maven Trung ương vào plugins/một tính năng và cung cấp cho họ thông qua P2:

  • junit 4.12
  • org.mockito.mockito-core 2.8.47
  • org.hamcrest.all 1.3.0

Thêm plugin vào đoạn thử nghiệm của tôi khi phụ thuộc làm cho kiểm tra chạy trong Eclipse.

Tuy nhiên, Tycho build của mảnh cùng sẽ thất bại với các thông điệp sau đây:

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) 

Vì vậy, có vẻ như một số plugin khác đang tải gói org.hamcrest.Matchertrước mảnh của tôi không. Điều này có thể là do đối với sự hỗn loạn xuất/nhập/xuất một phần/xuất khẩu một phần xung quanh thiết lập JUnit/Hamcrest/Mockito.

Có ai có ý tưởng hay không: ví dụ làm việc - cách thức nhận ba thành phần hoạt động cùng nhau trong cả IDE (để kiểm tra nhanh xem thử nghiệm có chạy) hay Tycho (để kiểm tra trong khi tòa nhà)?

+0

Tôi nghĩ rằng Mockito 2.8.47 đã có hamcrest. – want2learn

+0

Tôi nhận được lỗi trên một đoạn thử nghiệm với phụ thuộc vào chỉ Hamcrest và JUnit mặc dù. –

+0

Tôi nghĩ rằng bạn là đúng trong đó nguồn gốc của vấn đề là sự hỗn loạn xuất khẩu xung quanh JUnit/Hamcrest/Mockito. Plugin p2-maven có khả năng tạo ra các MANIFEST gây hiểu nhầm. Bạn có thể thêm một dự án tối thiểu để tái tạo vấn đề? –

Trả lời

1

Dường như bộ nạp muốn các phụ thuộc trong một gói.

Nhưng tôi đoán bạn chưa đặt lib thử nghiệm của mình trong một gói.

Bạn có thể thử thêm chúng vào phần phụ thuộc của sản phẩm để xem phản ứng của nó như thế nào.

Các vấn đề liên quan