单元测试线性搜索方法

时间:2017-10-12 23:55:13

标签: java unit-testing

我正在尝试学习更复杂方法的单元测试。我有一个线性搜索方法,搜索一个数组并返回另一个包含" 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;

任何帮助将不胜感激。谢谢。

2 个答案:

答案 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(...)方法定义的类型参数要求