我正在为类CardManager.java,编写单元测试代码
在执行单元测试代码时,我得到了:java.lang.ClassCastException:java.util.LinkedList无法转换为java.util.ArrayList
CardManager.java
对于下面的行,我为单元测试代码编码了when条件。
ArrayList arr1= (ArrayList) getPanCardUtil().validatePanCard("" , "" , "" , "");
cardManagerTest.java
List<String> abc = new ArrayList<String>();
when(cardManager.validate("" , "" , "" , "").thenReturn(abc);
验证.java
public List<String> validate("" , "" , "" , "");
我怀疑线路
ArrayList arr1= (ArrayList) getPanCardUtil().validatePanCard("" , "" , "" , "");
应该改为
List arr1= getPanCardUtil().validatePanCard("" , "" , "" , "");
在您发布的代码中,既没有对LinkedList
的引用,也没有对方法validatePanCard
的任何其他引用,但如果同时使用这两种方法,则需要避免下转换,并尽可能将所有内容保持在接口级别。
如果您发布了更完整的代码,就有可能隔离出真正的问题。
此外,告诉我们您使用的嘲讽框架可能会有所帮助。我怀疑(仅从语法上)它是Mockito。
从您提供的代码中,不清楚方法是cardManager.validate(",",")是什么(在cardmanagerTest.java中)?
我怀疑您在CardManager.java中有一个方法,它实现了validate.java的方法验证
public LinkedList<String> validate(String v, String v2, String v3, String v4) {}
您的测试用例失败了,因为它与此方法的返回类型不匹配,但与validate.java中的接口定义匹配。您应该只返回一个List类型。
public List<String> validate(String v, String v2, String v3, String v4) {}