2017-01-31 14 views
13

tôi nhận được ngoại lệ sau khi bài kiểm tra là bắt đầu:Không thể khởi tạo plugin: giao diện org.mockito.plugins.MockMaker

Testcase: treeCtorArgumentTest(com.xythos.client.drive.cachedtree.CachedTreeTest): Caused an ERROR 
Could not initialize plugin: interface org.mockito.plugins.MockMaker 
java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker 
    at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:66) 
    at com.sun.proxy.$Proxy7.isTypeMockable(Unknown Source) 
    at org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:29) 
    at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22) 
    at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:168) 
    at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:162) 
    at org.mockito.internal.MockitoCore.mock(MockitoCore.java:64) 
    at org.mockito.Mockito.mock(Mockito.java:1687) 
    at org.mockito.Mockito.mock(Mockito.java:1600) 
    at com.xythos.client.drive.cachedtree.CachedTreeTest.setUp(CachedTreeTest.java:51) 
Caused by: java.lang.NoClassDefFoundError: net/bytebuddy/dynamic/loading/ClassLoadingStrategy 
    at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.<init>(SubclassByteBuddyMockMaker.java:33) 
    at org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.<init>(ByteBuddyMockMaker.java:22) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at java.lang.Class.newInstance(Class.java:442) 
    at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:54) 
    at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:18) 
    at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:17) 
    at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:24) 
Caused by: java.lang.ClassNotFoundException: net.bytebuddy.dynamic.loading.ClassLoadingStrategy 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 

này được thử nghiệm của tôi:

package com.xythos.client.drive.cachedtree; 

import org.junit.After; 
import org.junit.AfterClass; 
import org.junit.Before; 
import org.junit.BeforeClass; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.junit.MockitoJUnitRunner; 

@RunWith(MockitoJUnitRunner.class) 

    public class CachedTreeTest { 

     public CachedTreeTest() { 
     } 

     @Test 
     public void treeCtorArgumentTest() { 
     somemock m = mock(SomeClass.class); 
     } 
    } 

Tôi đang sử dụng NetBeans 8.2. Tôi đã tải về mockito-core-2.7.0.jar, và sau đó tôi chọn "Test Libraries" -> "Add Jar" và thêm mockito-core-2.7.0.jar.

Đường dẫn và mọi thứ có vẻ ổn, tôi ', m vẫn nhận được ngoại lệ.

Bạn có lời khuyên nào không?

+1

Kiểm tra lời giải tại https://stackoverflow.com/a/41964561/4903889 – AskQ

Trả lời

21

Thiếu tham chiếu đến:

  • byte-thân-1.6.5.jar
  • byte-thân-agent-1.6.5.jar
  • objenesis-2.5.jar

Kể từ phiên bản beta Mockito 2.0.2, Mockito-core có các phụ thuộc.

+1

thể bạn gắn cờ này làm câu trả lời được chấp nhận? Nó sẽ giúp người khác – DanielCuadra

+1

những thư viện được bao gồm theo mặc định, đây không phải là giải pháp – Eduardo

2

Tôi đã có Byte Buddy trên classpath (là transitive dep của Mockito 2.8.9) và vẫn có ngoại lệ. Lý do cho tôi là tôi chạy các bài kiểm tra Đơn vị với JRE thay vì JDK. Chuyển sang JDK làm việc cho tôi.

0

Tôi đã có cùng một vấn đề - cùng một stacktrace xuất hiện trong nhật ký của tôi. Nó thường là vấn đề với thiết lập dự án ... HOẶC
Sự cố có thể nằm trong các JAR bytebuddys nếu chúng không được tải xuống chính xác.
Khi tôi cố gắng kiểm tra lớp ClassLoadingStrategy bằng tay sau đó tôi nhận được lỗi zip.

Trong trường hợp đó nó được chỉ đủ tự xóa các Buddy Byte từ thư mục maven địa phương, thường nằm tại địa chỉ:.
{nhà}/m2/kho/net/bytebuddy/

Các thử tiếp theo để chạy dự án hoặc kiểm tra chúng sẽ được tải xuống lại và hoạt động như mong đợi.

Trình nạp lớp phổ biến Java không bình thường phải đối mặt giống như khi lớp hoặc bình bị thiếu cũng như bình bị hỏng.

10

Nếu bạn đang sử dụng powermock đảm bảo rằng sự phụ thuộc của bạn trỏ đến:

org.powermock:powermock-api-mockito2 

thay vì

org.powermock:powermock-api-mockito 
Các vấn đề liên quan