【问题标题】:Trying to test static method using powermock尝试使用 powermock 测试静态方法
【发布时间】:2019-08-12 13:47:04
【问题描述】:

我正在尝试对需要模拟一些静态方法的代码进行测试。我发现使用 powermock,我将能够模拟正在使用的静态方法。

我尝试添加这些依赖项 power mock module-junit4 依赖项以及 powermock-api-mockito 并将它们的版本显式设置为 1.7.1

<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-module-junit4</artifactId>
  <version>1.7.1</version>
</dependency>

<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-api-mockito</artifactId>
  <version>1.7.1</version>
  <scope>test</scope>
</dependency>

@RunWith(PowerMockRunner.class)
@PrepareForTest({SystemParameterQueryHelper.class})
public class VccTemplateConvertorTest{}

线程“main”中的异常 java.lang.NoSuchMethodError: org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.getFrameworkReporterFactory()Lorg/powermock/core/reporter/MockingFrameworkReporterFactory; 在 org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.getMockingFrameworkReporter(JUnit4TestSuiteChunkerImpl.java:140) 在 org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:119) 在 org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:57) 在 org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59) 在 org.junit.runner.JUnitCore.run(JUnitCore.java:157) 在 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) 在 com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

【问题讨论】:

  • 您缺少powermock-module-junit4test 范围。 ——但这似乎无关紧要。一个类似的配置测试项目适用于我(在 Eclipse 中)。

标签: testing junit mockito powermock


【解决方案1】:

您使用的是相当过时的 PowerMock 版本。看着at the documentation

PowerMock 2.0.0 及更高版本已支持 Mockito 2。PowerMock 1.7.0 及更高版本已对 Mockito 2 进行实验性支持。

在这种情况下,重点是实验性。 我建议尝试更新您正在使用的 PowerMock 版本。这是我目前的配置:

<properties>
  ...

  <version.mockito>2.23.4</version.mockito>
  <version.powermock>2.0.2</version.powermock>
</properties>

<dependencies>
   ...

  <dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>${version.mockito}</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>${version.powermock}</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito2</artifactId>
    <version>${version.powermock}</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-core</artifactId>
    <version>${version.powermock}</version>
    <scope>test</scope>
  </dependency>
</dependencies>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多