@Rule 和 PowerMockRule 的问题

问题描述

我正在使用

@Rule
public PowerMockRule rule = new PowerMockRule();

在我的一个测试文件中。现在,当我删除这部分代码时,几个测试用例开始失败,它们位于不同的文件夹中并且与此文件没有直接关系。 可能是什么问题?

解决方法

有关详细信息,请参阅以下 wiki 链接。

从技术上讲,您可以使用 @RunWith(PowerMockRunner.class) 代替 PowerMockRule ,如下例所示。

因此,当您删除 PowerMockRule 时,您的测试将会失败,因为您的测试中将没有 @RunWith(PowerMockRunner.class)

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

使用 JUnit 规则进行引导
自 PowerMock 1.4 以来可用的功能 自 1.4 版 可以使用 JUnit Rule 而不是引导 PowerMock 使用 PowerMockRunner 和 RunWith 注解。这允许您在仍然使用其他 JUnit 运行程序的同时 受益于 PowerMock 的功能。您可以通过指定:

PowerMockRule

@PrepareForTest(X.class); 
public class MyTest {
     @Rule
     PowerMockRule rule = new PowerMockRule();
     // Tests goes here
     ... 
}

没有PowerMockRule

@RunWith(PowerMockRunner.class)
@PrepareForTest(X.class); 
public class MyTest {

     // Tests goes here
     ... 
}