【发布时间】:2013-07-23 18:21:28
【问题描述】:
我有一个带有两个 Map 字段的抽象类。我想模拟并注入 AbstractClass 子类的一个对象以进行单元测试。另一个我真的不太关心,但它有一个二传手。
public abstract class AbstractClass {
private Map<String, Object> mapToMock;
private Map<String, Object> dontMockMe;
private void setDontMockMe(Map<String, Object> map) {
dontMockMe = map;
}
}
当使用@InjectMocks 时,它会自动尝试按顺序注入:构造函数、setter、字段。它通过检查类型来检查它是否可以在每个地方注入,然后命名是否有多种类型的可能性。这对我来说效果不佳,因为我的模拟 mapToMock 实际上是通过它的 setter 注入到 dontMockMe 中的。我无法编辑这个抽象类。有什么办法让我绕过二传手注入?提前谢谢!
【问题讨论】:
-
只是为了纠正你写的东西——Mockito 首先尝试构造函数注入,然后尝试“setter and field”注入,其中可以通过 setter 或直接将模拟注入到字段中。即使你没有这个 setter,你仍然会遇到问题,因为 Mockito 会将你的 mock 注入到这两个字段中。
标签: java unit-testing junit mockito