gpt4 book ai didi

Java:使用迭代器测试方法

转载 作者:行者123 更新时间:2023-12-02 02:38:39 24 4
gpt4 key购买 nike

我的测试方法失败了。我不确定在迭代器的地方放置什么。目前为空。当有迭代器时如何测试?

这是完整的主类,它所做的就是搜索数组并返回给定数字的索引:

public class Main {
public static void main(String[] args) {

final List<Integer> numbers = Arrays.asList(3, 4, 6, 1, 9);
final Integer x = Integer.valueOf(1);
System.out.println(findSame(numbers.iterator(), x, 0));
}
public static final int findSame(Iterator<Integer> iterator, Integer x, int idx) {
if (!iterator.hasNext()) {
return -1;
}

if (iterator.next().equals(x)) {
return idx;
} else {
return findSame(iterator, x, idx+1);
}
}
}

这是我的测试试用方法,不起作用。

@Test
public void searchNumReturnsIndex1(){
Main instance = new Main();

System.out.println("Index");

Iterator<Integer> iterator = null;

int x = 6;

int expResult = 2;
int result = Main.findSame(iterator, x, 2);

assertEquals(expResult, result);
}

最佳答案

你的测试应该测试一些东西。就像,

  1. “如果我有列表 [2,3,5,7,11] 并且我搜索 7,它应该返回 3”
  2. “如果我有列表 [2,3,5,7,11] 并且我搜索 6,它应该返回 -1”

一旦你决定了你的测试应该是什么,它们应该是简短的、简单的,可以准确地测试一种情况。

@Test
public void searchFor7InShortListOfPrimes() {
List<Integer> numbers = Arrays.asList(2, 3, 5, 7, 11);
assertEquals(3, Main.findSame(numbers.iterator(), 7, 0));
}

@Test
public void searchFor6InShortListOfPrimes() {
List<Integer> numbers = Arrays.asList(2, 3, 5, 7, 11);
assertEquals(-1, Main.findSame(numbers.iterator(), 6, 0));
}

但是测试应该涵盖所有可能性。比如,如果列表按降序排列,或者根本没有排序怎么办?适合您的方法的任何方法;如果您的算法根本不依赖于未排序/降序排序,请不要测试它。

关于Java:使用迭代器测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45851710/

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