繁体   English   中英

类强制将异常传递给构造函数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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM