[英]Java: Testing Concrete Class passing by Interface, Mockito, JUnit
[英]Class cast exception passing interface to constructor 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)将接口作为参数。 从嘲笑返回的错误是通用类强制转换异常。
一种选择是使被测类的构造函数采用AbstractMapper而不是InstanceMapper,但是这似乎不是Java的好习惯,因为它只应接受InstanceMapper。 最好的方法是什么。
您不能将instanceMapperClass作为instanceMapperClass强制转换为InstanceMapper,它是模拟代理,因此您会得到classCastException。 如果您需要instanceMapperClass作为InstanceMapper,请执行以下操作:
instanceMapperClass = mock(InstanceMapper.class)
在这种情况下,instanceMapperClass创建为具有代理的InstanceMapper。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.