【发布时间】:2017-12-20 14:09:20
【问题描述】:
我有一个抽象类 B,它扩展了另一个抽象类 A。在抽象类 A 中,我有受保护的方法转换。我想测试从没有实现的基类调用方法转换的方法 foo。如果我不能更改转换方法签名,我如何模拟方法转换。
abstract class B extends A {
public void foo(Object someObject) {
Object convertedObject = convert(someObject);
//logic for testing
}
}
abstract class A {
protected abstract Object convert(Object some object);
}
我使用 Mockito.spy() 来调用真实方法,但 convert 方法不可用于模拟(通过 Mockito.when (...).thenReturn (...) 因为它受到保护。
B b = Mockito.spy(B.class);
告诉我如何测试方法 foo。
【问题讨论】:
-
通过非抽象子类对其进行测试。你需要一个 B 的实例来测试它,但你不能实例化 B 因为它是抽象的
-
你应该使用 PowerMockito
标签: java unit-testing mocking mockito