gpt4 book ai didi

java - 使用 Comparable[] 编写二分查找方法的 JUnit 测试

转载 作者:行者123 更新时间:2023-12-02 09:03:53 26 4
gpt4 key购买 nike

请注意我是初学者

我正在尝试为以下代码编写一组测试用例:

int binarySearch(Comparable[] objArray, Comparable searchObj) {

int low = 0;
int high = objArray.length - 1;
int mid = 0;

//iterative binary search algorithm
while (low <= high) {
mid = (low + high) / 2;

if (objArray[mid].compareTo(searchObj) < 0) {
low = mid + 1;
} else if (objArray[mid].compareTo(searchObj) > 0) {
high = mid - 1;
} else {
return mid;
}
}
//return target index position
if (objArray[mid].compareTo(searchObj) > 0) {
return mid;
} else
return mid + 1;
}

@Test
public void testBinarySearch() {

//Test for lower boundary of array
BinarySearch ob = new BinarySearch();
Comparable[] array = {10, 20, 30, 40, 50};
int result = ob.binarySearch(array, 5);
System.out.println("Index position should return 0. Result is: " + result);


}

如您所见,我已经编写了第一个测试用例的逻辑,并且它返回了正确的结果。但是,我似乎无法弄清楚如何将其重写为 JUnit 测试,以便我还可以编写其他测试(例如测试数组的上边界)。

我不确定是否应该使用 Assert 或 assertArrayEquals。我以前从未使用过 JUnit,可能会忽略一些相对简单的东西。

最佳答案

良好的开端。不要考虑打印,而是直接验证。这是重写为 junit 的第一个测试:

@Test
public void testLowerBoundaryOfArray() {
BinarySearch ob = new BinarySearch();
Comparable[] array = {10, 20, 30, 40, 50};
int result = ob.binarySearch(array, 5);
Assert.assertEquals("Index position should be as expected", 0, result);

}

请注意,我还根据正在测试的内容来命名该测试,而不是在评论中说明。

Assert.assertEquals 有两个或三个参数(第一个是可选的测试步骤说明)。第二个是期望,第三个是实际结果。有人可能会说,在您的情况下,完全不需要期望消息,但我将其包含在内是为了完整演示 API。

关于java - 使用 Comparable[] 编写二分查找方法的 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59971881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com