首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerMock throws (setMockName)

PowerMock throws (setMockName)
EN

Stack Overflow用户
提问于 2014-11-25 21:11:48
回答 7查看 52.3K关注 0票数 21

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

代码语言:javascript
复制
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.powermoke:powermock模块-junit4 4:1.5.6
  • org.powermock:powermock-mockito-release-full:1.5.6

我已经跟踪了我的项目的依赖树和固定的冲突,以便将mockito-all:1.9.5包含在构建中。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-02-23 17:07:08

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

代码语言:javascript
复制
<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>
票数 7
EN

Stack Overflow用户

发布于 2016-11-02 02:01:24

确保powermockito mockito 版本对齐,如此版本图表- MockitoUsage#支持-版本中所示,

代码语言:javascript
复制
Mockito                     | PowerMock
------------------------------------------------------------------------------
2.0.0-beta - 2.0.42-beta    |   1.6.5+
------------------------------------------------------------------------------
1.10.19                     |   1.6.4
1.10.8 - 1.10.x             |   1.6.2+
1.9.5-rc1 - 1.9.5           |   1.5.0 - 1.5.6
1.9.0-rc1 & 1.9.0           |   1.4.10 - 1.4.12
1.8.5                       |   1.3.9 - 1.4.9
1.8.4                       |   1.3.7 & 1.3.8
1.8.3                       |   1.3.6
1.8.1 & 1.8.2               |   1.3.5
1.8                         |   1.3
1.7                         |   1.2.5

使用maven找到mockitopowermock-mockito版本的简单方法,

代码语言:javascript
复制
mvn dependency:tree | grep mockito
[INFO] |  \- org.mockito:mockito-core:jar:1.8.5:compile
[INFO] +- org.mockito:mockito-all:jar:1.8.5:compile
[INFO] +- org.powermock:powermock-api-mockito:jar:1.4.9:compile

问题可能是应用程序中的mockito版本与powermockito使用的版本相冲突,如下面所示,我使用的是不支持mockito 1.8.5powermock 1.6.5

代码语言:javascript
复制
mvn clean dependency:tree | grep mockito
[INFO] +- org.mockito:mockito-all:jar:1.8.5:compile

[INFO] \- org.powermock:powermock-api-mockito:jar:1.6.5:compile
[INFO]    +- org.mockito:mockito-core:jar:1.10.19:compile
[INFO]    \- org.powermock:powermock-api-mockito-common:jar:1.6.5:compile
票数 55
EN

Stack Overflow用户

发布于 2016-09-23 20:30:04

我有

org.mockito mockito-all 1.8.4

添加到我的pom.xml之外,除了powermock的依赖项之外,移除它对我有用。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27136752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档