我的课程中有以下字段
@Resource(name = "lobIdCancellationNodeMap")
private Map<String, List<String>> lobIdCancellationNodeMap;
在此行之后,我们直接访问了此字段 lobIdCancellationNodeMap
我无法使用Mockito为此设置值,并且没有可用于设置此值的construtor。
这就是它的使用方式
lobIdCancellationNodeMap.get(lobId)
我不允许更改实现类
答案 0 :(得分:2)
虽然我同意其他用户的说明,测试一些不面向公众的东西似乎是错误的,但我确实对“我不被允许改变实施类”的情况表示同情。
@Resource注释旨在让应用程序在运行时注入实例。我建议你在运行时使用类似于应用程序的上下文来设置测试。这样,这个类将注入其资源。
如果失败,您可以使用Reflection将值设置为您需要的值。
答案 1 :(得分:1)
我已经使用spring框架提供的 ReflectionTestUtils 类解决了这个问题,你可以设置类的任何字段而不管它的访问修饰符。
ReflectionTestUtils.setField(mapper, "lobIdCancellationNodeMap", lobIdCancellationNodeMap);