PowerMockito无法正常工作:-java.lang.NoClassDefFoundError:org / mockito / internal / creation / CglibMockMaker

时间:2015-07-11 20:18:32

标签: couchbase powermockito

I am trying to mock the static method of CouchbaseCluster.create() using powermockito. Here is my test class. 

@PrepareForTest(CouchbaseCluster.class)
public class IAMKafkaConsumerTest extends PowerMockTestCase{

    private IAMKafkaConsumer iamKafkaConsumer;
    private CouchbaseCluster mockCouchbaseCluster;
    private Bucket mockBucket;




    @ObjectFactory
    public IObjectFactory getObjectFactory() {
        return new org.powermock.modules.testng.PowerMockObjectFactory();
    }

    @Test
    public void happyPath()
    {
        PowerMockito.mockStatic(CouchbaseCluster.class);

    }

}



My pom includes following:
<dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <scope>test</scope>
        </dependency> 
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <scope>test</scope>
        </dependency>
          <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-testng</artifactId>
       <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-testng-agent</artifactId>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <scope>test</scope>
      </dependency>
       <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <scope>test</scope>
    </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <scope>test</scope>
        </dependency>

当我通过TestNG

运行测试时,我收到此错误日志

java.lang.NoClassDefFoundError:org / mockito / internal / creation / CglibMockMaker 在org.powermock.api.mockito.internal.mockmaker.PowerMockMaker。(PowerMockMaker.java:40)         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)         at java.lang.reflect.Constructor.newInstance(Constructor.java:526)         在java.lang.Class.newInstance(Class.java:379)         在org.mockito.internal.configuration.plugins.PluginLoader.loadImpl(PluginLoader.java:61)         在org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:24)

2 个答案:

答案 0 :(得分:3)

事实证明,当与mockito 1.10.9

一起使用时,PowerMockito 1.5.X版本已被破坏

因此将版本更改为1.6.X对我有用。 这个链接帮助了我。

https://code.google.com/p/powermock/issues/detail?id=524

答案 1 :(得分:0)

除了 Puneet 的回答之外,您的项目中总是有可能有多个版本的 powermock lib,尤其是当它是一个巨大的版本时。就我而言,我通过项目文件搜索了“powermock”关键字,并找到了 powermock-mockito-release-full-1.6.1-full.jarpowermock-api-mockito-1.7.0 .jar,都有 PowerMockMaker 类。因此,删除不兼容的 1.6.1 版本解决了这个问题。