我正在尝试学习更复杂方法的单元测试。我有一个线性搜索方法,搜索一个数组并返回另一个包含" target"的索引的数组。如果发现。我该如何为这种方法编写测试?这是下面的方法。
/
以下是我目前测试方法的内容。这两个数组是我的测试类的字段。 intArray是我正在搜索的数组。和newArray是我想要返回的数组?但是,我不确定我是否会正确地做这件事。我在第二行遇到不兼容的类型错误。 "不存在类型变量T的实例,因此int []符合Integer,其中T是类型变量"。
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;
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
如果newArray应该包含索引2,我认为它应该是{0}而不是{2}
返回的值也是一个int [],然后你可以调用assertEquals()来比较返回的数组和newArray
int[] result = Searching.linearSearch3(intArray,(Integer)2);
for(int i=0;i<result.length;i++){
assertEquals(result[i], (int)newArray[i]);
}
答案 1 :(得分:0)
您的testLinearSearch3()
方法不依赖于T类型参数,因此那里不需要<T extends Comparable>
声明。您明确在测试方法的主体和数组中使用Integer
类型,该类型满足linearSearch3(...)
方法定义的类型参数要求