もっと複雑な方法のためのユニットテストを学ぼうとしています。私は配列を検索し、 "ターゲット"のインデックスが含まれている別の配列を返すリニア検索メソッドを持っています。この方法のテストを書くにはどうすればいいですか?ここには以下の方法があります。ユニットテストの線形検索方法
public static <T extends Comparable> int[] linearSearch3 (T[] data, T
target)
int count = 0;
int index = 0;
int[] indices = new int[data.length];
for (int i = 0; i < data.length;i++){
if (data[i] == null) break;
if (data[i].compareTo(target) == 0){
indices[count] = i;
count++;
}
}
Arrays.copyOf(indices, count);
int[] copy = Arrays.copyOf(indices,count);
if(count != 0){
return copy;
}
else
return null;
これまでのテスト方法ではこれがあります。 2つの配列は私のテストクラスのフィールドです。 intArrayは私が探している配列です。 newArrayは返す配列です。しかし、私はこれを正しく行うつもりかどうかはわかりません。私の2番目の行に互換性のない型エラーが発生しました。 "型変数Tのインスタンスが存在しないので、int []はTが型変数であるIntegerに適合します。"
private final Integer[] intArray = {2, 5, 6, 8, 12, 17, 3, 45, 29, 88, 76, 54,
1, 12, 5, 41, 12, 99};
private final Integer[] newArray = {2};
@Test
public <T extends Comparable> void testLinearSearch3() {
System.out.println("Testing LinearSearch3");
Integer result = Searching.linearSearch3(intArray,(Integer)2);
助けてください。ありがとうございました。 NEWARRAYが2のインデックスを含むようになっている場合
ループの前に長さアサーションを追加して、assertEqualsをフィードすることをお勧めします結果[i]とnewArray [i]の両方を使用できるため、Objects#equalインタフェース – Igor