java - 无法使用 PowerMockRunner 运行 JUnit 测试

标签 java exception junit powermock

我有一个基于 Gradle 的 Java 项目,现在我想使用 PowerMock 模拟私有(private)方法。问题是我无法使用 PowerMockRunner,因为当我添加 @RunWith(org.powermock.modules.junit4.PowerMockRunner.class) 注释时总是出现以下异常。

错误:

org.powermock.reflect.exceptions.FieldNotFoundException: Field 'fTestClass' was not found in class org.junit.internal.runners.MethodValidator.
at org.powermock.reflect.internal.WhiteboxImpl.getInternalState(WhiteboxImpl.java:581)
at org.powermock.reflect.Whitebox.getInternalState(Whitebox.java:308)
at org.powermock.modules.junit4.internal.impl.testcaseworkaround.PowerMockJUnit4MethodValidator.validate TestMethods(PowerMockJUnit4MethodValidator.java:79)
at org.powermock.modules.junit4.internal.impl.testcaseworkaround.PowerMockJUnit4MethodValidator.validate InstanceMethods(PowerMockJUnit4MethodValidator.java:49)
at org.junit.internal.runners.MethodValidator.validateMethodsForDefaultRunner(MethodValidator.java:51)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.validate(PowerMockJUnit44RunnerDelegateImpl.java:108)
...

这是我的测试依赖项:

testCompile 'junit:junit:4.+',
            'org.powermock:powermock-core:1.5.6',
            'org.powermock:powermock-module-junit4:1.5.6',
            'org.powermock:powermock-api-mockito:1.5.6'

测试本身在完全为空时也会失败(初始化错误):

@RunWith(PowerMockRunner.class)
public class SomeTest {
    @Test
    public void testSomething() {
    }
}

有什么想法可能是错的吗?其他使用 PowerMock 的测试运行良好(没有一个使用 PowerMockRunner)。

您好,感谢您的帮助! 本

最佳答案

这是在您使用 JUnit 4.12 和 PowerMock < 1.6.1 时出现的错误。该问题在 PowerMock 1.6.1 中得到解决。请相应地更新您的依赖项

testCompile 'junit:junit:4.12',
            'org.powermock:powermock-core:1.6.1',
            'org.powermock:powermock-module-junit4:1.6.1',
            'org.powermock:powermock-api-mockito:1.6.1'

如果您无法升级 PowerMock,那么您可以使用 JUnit 4.11。

testCompile 'junit:junit:4.11',
            'org.powermock:powermock-core:1.5.6',
            'org.powermock:powermock-module-junit4:1.5.6',
            'org.powermock:powermock-api-mockito:1.5.6'

能否请您添加更多的堆栈跟踪行,以揭示有关问题的更多详细信息。

关于java - 无法使用 PowerMockRunner 运行 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26192929/

相关文章:

java - 控制台中出现奇怪的无限循环,但 Applet 中却没有 - Java

java - java中如何捕获main方法抛出的异常?

java - 在查询参数中获取 "%"值的 charconversion 异常?

java - 无法为测试上下文的 @Transactional 测试检索 PlatformTransactionManager

scala - 如何订购@Before 方法

java - 如何覆盖Spring中@Value注入(inject)的字段值?

java - 无法在另一台计算机上打开我的 jar 文件

java - 未给出输入时不会引发异常

Java:无法为对象堆保留足够的空间

jsf - 使用 PrimeFaces 5.1 无法访问 JSF 2.2 中错误代码 500 的 javax.servlet.error.*