类强制转换异常将接口传递给构造函数 mockito junit



如何通过以下示例避免类转换异常:

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。

相关内容

  • 没有找到相关文章

最新更新