テスト対象メソッドのインターフェース
public class Foo {
public void process(List<String> arg0) {
/* 後述 */
}
}
自分で書いた適当なテストコード
List<String> arg0 = Arrays.asList("あ", "い", "う");
Foo foo = new Foo();
foo.process(arg0);
これが何故かClassCastException
で落ちる。
テスト対象のソースを見てビックリ。
なんでわざわざキャストしてんだよ
public void process(List<String> arg0) {
// ↓なんとコンパイル警告すら出ない!
List<String> ls = (ArrayList) arg0;
// 以下略
}
コンパイル警告すら出ない恐ろしいコードでしたとさ……
当たり前だけどこっちだと落ちなかった。
(落ちないから良いとは言っていない)
新人が書いたテストコード
List<String> arg0 = new ArrayList<>();
arg0.add("あ");
arg0.add("い");
arg0.add("う");
Foo foo = new Foo();
foo.process(arg0);