问题标签 [powermockrunner]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
9 浏览

powermockito - 在运行 PowerMock 时遇到一些异常,因此无法运行测试用例

java.lang.RuntimeException:内部错误:无法在方法 setInternalState 中找到“修饰符”字段。

在 org.powermock.reflect.internal.WhiteboxImpl.sedModifiersToField(WhiteboxImpl.java:2348) 在 org.powermock.reflect.internal.WhiteboxImpl.removeFinalModifierIfPresent(WhiteboxImpl.java:2312) 在 org.powermock.reflect.internal.WhiteboxImpl.setField (WhiteboxImpl.java:2298) 在 org.powermock.reflect.internal.WhiteboxImpl.setInternalState(WhiteboxImpl.java:304) 在 org.powermock.reflect.internal.WhiteboxImpl.setInternalState(WhiteboxImpl.java:317) 在 org.powermock。 reflect.Whitebox.setInternalState(Whitebox.java:190) at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:61) at org.junit.runners.Suite.runChild(Suite.java:128) at org .junit.runners.Suite.runChild(Suite.java:27) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71 ) 在 org.junit.runners.ParentRunner。runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners .ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij。 rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter. java:54) 引起:java.lang.NoSuchFieldException: org.powermock.reflect.internal.WhiteboxImpl.sedModifiersToField(WhiteboxImpl.java:第2342章……还有19个还有 19 个还有 19 个288) 在 org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 在 org.junit.runners.ParentRunner.run(ParentRunner .java:363) 在 org.junit.runner.JUnitCore.run(JUnitCore.java:137) 在 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) 在 com.intellij.rt.junit.IdeaTestRunner$ Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) : java.lang.NoSuchFieldException: org.powermock.reflect.internal.WhiteboxImpl.sedModifiersToField(WhiteboxImpl.java:2342) 的 java.base/java.lang.Class.getDeclaredField(Class.java:2412) 的修饰符 ... 19更多的288) 在 org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 在 org.junit.runners.ParentRunner.run(ParentRunner .java:363) 在 org.junit.runner.JUnitCore.run(JUnitCore.java:137) 在 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) 在 com.intellij.rt.junit.IdeaTestRunner$ Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) : java.lang.NoSuchFieldException: org.powermock.reflect.internal.WhiteboxImpl.sedModifiersToField(WhiteboxImpl.java:2342) 的 java.base/java.lang.Class.getDeclaredField(Class.java:2412) 的修饰符 ... 19更多的在 org.junit.runners.ParentRunner 访问 $000(ParentRunner.java:58) $2.evaluate(ParentRunner.java:268) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:363) 在 org.junit.runner .JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) 原因:java.lang.NoSuchFieldException:java 中的修饰符。 base/java.lang.Class.getDeclaredField(Class.java:2412) at org.powermock.reflect.internal.WhiteboxImpl.sedModifiersToField(WhiteboxImpl.java:2342) ... 还有 19 个在 org.junit.runners.ParentRunner 访问 $000(ParentRunner.java:58) $2.evaluate(ParentRunner.java:268) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:363) 在 org.junit.runner .JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) 原因:java.lang.NoSuchFieldException:java 中的修饰符。 base/java.lang.Class.getDeclaredField(Class.java:2412) at org.powermock.reflect.internal.WhiteboxImpl.sedModifiersToField(WhiteboxImpl.java:2342) ... 还有 19 个junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com .intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) 在 com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) 在 com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:54) 原因:java.lang.NoSuchFieldException: org.powermock.reflect.internal.WhiteboxImpl.sedModifiersToField(WhiteboxImpl 的 java.base/java.lang.Class.getDeclaredField(Class.java:2412) 的修饰符.java:2342) ... 还有 19 个junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com .intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) 在 com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) 在 com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:54) 原因:java.lang.NoSuchFieldException: org.powermock.reflect.internal.WhiteboxImpl.sedModifiersToField(WhiteboxImpl 的 java.base/java.lang.Class.getDeclaredField(Class.java:2412) 的修饰符.java:2342) ... 还有 19 个69) 在 com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) 在 com.intellij.rt.junit 的 com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) .JUnitStarter.main(JUnitStarter.java:54) 原因:java.lang.NoSuchFieldException: org.powermock.reflect.internal.WhiteboxImpl 的 java.base/java.lang.Class.getDeclaredField(Class.java:2412) 的修饰符.sedModifiersToField(WhiteboxImpl.java:2342) ... 19 更多69) 在 com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) 在 com.intellij.rt.junit 的 com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) .JUnitStarter.main(JUnitStarter.java:54) 原因:java.lang.NoSuchFieldException: org.powermock.reflect.internal.WhiteboxImpl 的 java.base/java.lang.Class.getDeclaredField(Class.java:2412) 的修饰符.sedModifiersToField(WhiteboxImpl.java:2342) ... 19 更多WhiteboxImpl.sedModifiersToField(WhiteboxImpl.java:2342) ... 还有 19 个WhiteboxImpl.sedModifiersToField(WhiteboxImpl.java:2342) ... 还有 19 个

0 投票
0 回答
12 浏览

kotlin - PowerMock - 如何在 kotlin 中模拟私有伴随对象函数?

我正在尝试使用 PowerMock 测试 Kotlin 静态方法(伴随对象),但 PowerMock 找不到该方法,也无法运行它。

测试类:

测试班

这将返回以下 2 个错误:

在 MyClass 类中找不到名称为“doSomething”且参数类型为 [int, int] 的方法

此处检测到未完成的存根:-> 在 MyClass.doSomething(MyClassTest.kt)

例如 thenReturn() 可能会丢失。正确的存根示例:when(mock.isOk()).thenReturn(true); when(mock.isOk()).thenThrow(异常); doThrow(exception).when(mock).someVoidMethod(); 提示:

  1. 缺少 thenReturn()
  2. 您正在尝试存根不支持的最终方法
  3. 在“thenReturn”指令完成之前,您正在对内部另一个模拟的行为进行存根

org.mockito.exceptions.misusing.UnfinishedStubbingException:在此处检测到未完成的存根:-> 在 MyClassTest.doSomethingTest(MyClassTest.kt)

例如 thenReturn() 可能会丢失。正确的存根示例:when(mock.isOk()).thenReturn(true); when(mock.isOk()).thenThrow(异常); doThrow(exception).when(mock).someVoidMethod();