【问题标题】:IllegalStateException complaining PowerMockRule being loaded by powermock classloader rather than system classloaderIllegalStateException 抱怨 PowerMockRule 由 powermock 类加载器而不是系统类加载器加载
【发布时间】:2018-02-22 20:12:53
【问题描述】:
@RunWith(PowerMockRunner.class)
@PrepareForTest(StaticMethodsHolder.class)

public class MockNTestStaticMethodsHolder {

  @Rule public PowerMockRule rule = new PowerMockRule();

  @Test public void staticSvcClientMethod () {

    // blah blah blah
    mockstatic (StaticMethodsHolder.class);

    expect (StaticMethodsHolder.TomBradyIsStillTheBest()).andReturn(UNQUESTIONABLY);
    expect (StaticMethodsHolder.NEPatriotsStillTheBest()).andReturn(MAYBE);
    expect (StaticMethodsHolder.NEPatriotsLiiWereIdiots()).andReturn(TOTALLY);
    expect (StaticMethodsHolder.NEPatriotsWinsLiii()).andReturn(RU_KIDDING_ME);

  }

}

Maven 依赖项/属性按以下顺序排列:

  1. powermock 版本 1.6.6
  2. easymock 3.4 版
  3. easymock
  4. powermock-module-junit4
  5. powermock-api-easymock
  6. powermock-module-junit4-rule-agent (删除它会导致构造函数问题)
  7. powermock-module-junit4-rule (删除此依赖项无效)
  8. powermock-classloading-xstream

运行时错误:

java.lang.IllegalStateException PowerMockRule can only be used
with the system classloader but was loaded by
org.powermock.core.classloader.MockClassLoader.

PowerMock 正在咬自己的尾巴。它想使用自己的类加载器,但 JVM 说 PowerMockRule 必须由系统加载。

我能做些什么来解决这个问题?

【问题讨论】:

标签: java junit powermock mockstatic


【解决方案1】:

您已经在使用 PowermockRunner,不需要使用该规则。

https://github.com/powermock/powermock/wiki/powermockrule

如果您在需要 Powermock 功能的同时使用不同的运行器,这是 Rule 的用例。

【讨论】:

    猜你喜欢
    • 2012-07-08
    • 2015-01-04
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多