如何通过以下示例避免类转换异常:
interface AbstractMapper {
mapTo();
mapFrom();
}
class TestClass {
@Mock
AbstractMapper instanceMapperClass;
Class testClass;
@Setup
public void setup(){
instanceMapperClass = (InstanceMapper) instanceMapperClass;
testClass = new Class(instanceMapperClass);
}
}
其中 InstanceMapper 实现 AbstractMapper。
所以abstractMapper.mapTo(abstractMapper(将接口作为参数。从 mockito 返回的错误是泛型类强制转换异常。
一种选择是使被测类的构造函数采用AbstractMapper而不是InstanceMapper,但这似乎不是好的Java实践,因为它应该只接受InstanceMapper。最好的方法是什么。
你不能将instanceMapperClass转换为InstanceMapper作为instanceMapperClass,它是模拟代理,结果你会得到classCastException。如果您需要 instanceMapperClass 成为 InstanceMapper,请执行以下操作:
instanceMapperClass = mock(InstanceMapper.class)
在本例中,instanceMapperClass 创建为 InstanceMapper with proxy。