【发布时间】:2019-09-17 17:53:53
【问题描述】:
我正在尝试在静态类上编写单元测试。我实际上想验证是否调用了该类的方法。
@Guice(modules = testModule.class)
@PrepareForTest(ServiceRunnerBase.class)
@PowerMockIgnore("javax.management.*")
public class RunnerTest extends PowerMockTestCase {
@BeforeMethod
public void setUp() {
PowerMockito.mockStatic(ServiceRunnerBase.class);
}
@Test
public void testStopCallsReleaseLock() {
// I will add code here when I get the powerMockito mockStatic to work.
}
}
我的测试编译了,但是当我运行它时,我得到了这个异常:
org.powermock.api.mockito.ClassNotPreparedException:
[Ljava.lang.Object;@2fb38899
The class ServiceRunnerBase not prepared for test.
但是,我的课程在 @PrepareForTest 注释中。我的类ServiceRunnerBase 是一个抽象类,但它定义了几个静态方法。我无法更改ServiceRunnerBase。
ServiceRunnerBase 是一个抽象类,具有以下内容(我无法发布代码,它是专有的)
- 私有静态成员,一些标记为
@Getter - 静态方法,一些是私有的,一些是受保护的,一些是公共的
- 我试图验证我的代码正在调用的方法是
- 受保护的静态无效释放(字符串调用类,最终布尔成功)
我在使用 PowerMockito 时做错了什么?
【问题讨论】:
-
你也可以发布 ServiceRunnerBase 类
-
@Mark 你想念
@RunWith(PowerMockRunner.class)吗? -
@RunWith 用于 JUnit,我正在使用 testng
-
我无法发布 ServiceRunnerBase 类,它是专有的。我将在我的问题中添加一些描述。
-
ServiceRunnerBase不是最终的对吗?
标签: java testng powermockito