当前位置: 首页 > 面试题库 >

PowerMock抛出NoSuchMethodError(setMockName)

邵胜涝
2023-03-14
问题内容

我试图使用模拟一个构造函数PowerMockito但是每次运行测试时,都会出现以下错误:

java.lang.NoSuchMethodError: org.mockito.internal.creation.MockSettingsImpl.setMockName(Lorg/mockito/mock/MockName;)Lorg/mockito/internal/creation/settings/CreationSettings;
at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:107)
at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:60)
at org.powermock.api.mockito.internal.expectation.DefaultConstructorExpectationSetup.createNewSubstituteMock(DefaultConstructorExpectationSetup.java:105)
at org.powermock.api.mockito.internal.expectation.DefaultConstructorExpectationSetup.withAnyArguments(DefaultConstructorExpectationSetup.java:71)

我的项目中具有以下PowerMock依赖项:

  • org.powermock:powermock-module-junit4:1.5.6
  • org.powermock:powermock-mockito-release-full:1.5.6

我已经跟踪了项目的依赖关系树并修复了冲突,以便mockito-all:1.9.5将其包含在构建中。


问题答案:

我的问题是由于项目的(传递)依赖项中的javassist版本冲突。我所做的是搜索所有将旧版本的Javassist放入构建中的依赖项,然后将其排除。例如:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.5.1-Final</version>
    <scope>provided</scope>
    <exclusions>
        <exclusion>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
        </exclusion>
    </exclusions>
</dependency>


 类似资料:
  • 我想用Java学习OpenGL。我没有使用OpenGL的经验,但我对Java很满意。 计划是在Eclipse Indigo中使用JOGL。首先,从Schabby的博客中编写了一个简单的hello world应用程序。我的应用程序的源代码是相同的。 我遵循所有步骤并引用gluegen-rt-natives-windows-amd64.jar、gluegen-rt.jar、jogl-all.jar和j

  • 这是Google Guice调用代码: 这是个例外: 我的问题是消息没有告诉我缺少哪一个特定的方法。有没有好的方法来调试这个?这可能是一个Maven传递依赖问题吗?

  • 我用Spring启动将SpringRest服务作为外部雄猫的战争文件。 引起原因:Java . lang . nosuchmethoderror:org . spring framework . util . string utils . isempty(Ljava/lang/Object;)Z Spring版本由maven中的Spring启动器-启动器-父级管理,但我总是得到一个例外,这是不兼容

  • 问题内容: 与slf4j一起使用时, 跟踪如下 问题答案: 看起来您在各种SLF4J API和集成库之间的版本不匹配。关于版本兼容性,SLF4J非常不灵活(例如1.6.x与1.5.x不向下兼容)。 确保各种JAR版本匹配,并且确保在类路径上没有重复的JAR。

  • 我用的是Springboot和junit,我想用Powermock来模拟静态类,添加了Powermock后,单元测试通过IntelliJ IDEA运行得很好,但是当我在terminal下运行时,它会抛出ApplicationContextException:无法启动web服务器\n无法启动嵌入式Tomcat 我的基本测试类: 测试类: 似乎无法启动springboot嵌入的tomcat,但要使用P

  • 我们在一些历史项目中使用PowerMock。不幸的是,PowerMock已经死了,并且与Java11不兼容。 我们正在使用mockStatic()。是的,我们知道它被认为是有害的——它存在于遗留代码中,我们不希望现在就重写这些类。。。 是否有任何选项如何调整PowerMock以支持Java11?或者是否可以轻松地将其替换为其他Java11兼容的框架?(Mockito不支持mockStatic)