-1

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);

Validate.java

public List<String> validate("" , "" , "" , "");
4

2 に答える 2

1

回線を疑う

ArrayList arr1= (ArrayList) getPanCardUtil().validatePanCard("" , "" , "" , "");

に変更する必要があります

List arr1= getPanCardUtil().validatePanCard("" , "" , "" , "");

投稿したコードにはLinkedList、メソッドへの参照も他の参照もありませvalidatePanCardんが、両方を使用している場合は、ダウンキャストを避け、すべてをできるだけインターフェースレベルに保ちたいと考えています。

より完全なコードを投稿すると、実際の問題を特定できる可能性があります。

また、使用しているモック フレームワークを教えていただけると助かります。私はそれがMockitoであると(構文から)疑っています。

于 2012-07-20T11:35:49.793 に答える
0

あなたが提供するコードから、メソッドが cardManager.validate("","","","") であることが明確ではありません (cardmanagerTest.java 内)?

Validate.java のメソッド validate を実装する CardManager.java にメソッドがあると思われます

public LinkedList<String> validate(String v, String v2, String v3, String v4) {}

テスト ケースは、このメソッドの戻り値の型と一致しないため失敗しますが、validate.java のインターフェイス定義と一致します。リスト型を返すだけです。

public List<String> validate(String v, String v2, String v3, String v4) {}
于 2012-07-20T11:44:35.973 に答える