【问题标题】:PowerMockito not working : -java.lang.NoClassDefFoundError: org/mockito/internal/creation/CglibMockMakerPowerMockito 不工作:-java.lang.NoClassDefFoundError: org/mockito/internal/creation/CglibMockMaker
【发布时间】:2015-07-11 20:18:32
【问题描述】:

我正在尝试使用 powermockito 模拟 CouchbaseCluster.create() 的静态方法。这是我的测试课。

@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);
       
    }
    
}

我的项目 pom 包含以下依赖项:

<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) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 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)

【问题讨论】:

    标签: testng couchbase powermockito


    【解决方案1】:

    事实证明,PowerMockito 1.5.X 版本与 mockito 1.10.9 一起使用时会损坏

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

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

    【讨论】:

    • 它不会解决问题。我升级了,但问题没有解决
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 1970-01-01
      • 2021-12-12
      • 2012-09-15
      • 1970-01-01
      • 2022-07-24
      • 1970-01-01
      • 2020-06-08
      • 2018-06-18
      相关资源
      最近更新 更多