Java:用迭代器测试方法
我的测试方法失败了。我不确定在迭代器中放置什么。当前为空。当有迭代器时,如何测试这一点 下面是一个完整的主类,它只需搜索数组并返回给定数字的索引:Java:用迭代器测试方法,java,unit-testing,junit,Java,Unit Testing,Junit,我的测试方法失败了。我不确定在迭代器中放置什么。当前为空。当有迭代器时,如何测试这一点 下面是一个完整的主类,它只需搜索数组并返回给定数字的索引: 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)
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);
}
}
}
公共类主{
公共静态void main(字符串[]args){
最终列表编号=Arrays.asList(3,4,6,1,9);
最终整数x=整数。值为(1);
System.out.println(findSame(numbers.iterator(),x,0));
}
公共静态final int findSame(迭代器迭代器、整数x、int idx){
如果(!iterator.hasNext()){
返回-1;
}
if(iterator.next().equals(x)){
返回idx;
}否则{
返回findSame(迭代器,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);
}
@测试
public void search numreturnsindex1(){
Main实例=新的Main();
系统输出打印项次(“索引”);
迭代器迭代器=null;
int x=6;
int expResult=2;
int result=Main.findSame(迭代器,x,2);
assertEquals(expResult,result);
}
您的测试应该是测试一些东西。像
@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));
}
@测试
在ShortListofPrimes()中对7的公共无效搜索{
列表编号=数组.asList(2,3,5,7,11);
assertEquals(3,Main.findSame(numbers.iterator(),7,0));
}
@试验
在ShortListofPrimes()中对6的公共无效搜索{
列表编号=数组.asList(2,3,5,7,11);
assertEquals(-1,Main.findSame(numbers.iterator(),6,0));
}
但测试应该涵盖所有可能性。比如,如果列表按降序排列,或者根本没有排序,该怎么办。任何适合你的方法;如果你的算法根本不依赖于未排序/降序排序,就不要测试它。你的测试应该是测试一些东西。像
@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));
}
@测试
在ShortListofPrimes()中对7的公共无效搜索{
列表编号=数组.asList(2,3,5,7,11);
assertEquals(3,Main.findSame(numbers.iterator(),7,0));
}
@试验
在ShortListofPrimes()中对6的公共无效搜索{
列表编号=数组.asList(2,3,5,7,11);
assertEquals(-1,Main.findSame(numbers.iterator(),6,0));
}
但测试应该涵盖所有可能性。比如,如果列表按降序排列,或者根本没有排序,该怎么办。任何适合你的方法;如果您的算法根本不依赖于未排序/降序排序,请不要进行测试。从解释您要做的事情开始。然后解释你被困在哪里。“那我们也许能帮上忙。”希莫塞尔刚做了。你要做的事情更清楚一些。但仍然不清楚你被困在哪里。为什么单元测试比
main()
中的工作代码更难?基本上我不知道在这里放置什么:int result=main.findSame(迭代器,x,2);迭代器还是数字迭代器?我尝试的每件事都不是真的在做什么。好吧,不要只是随便尝试;想想看。是什么在main()
中生成迭代器的<代码>数字。什么是编号?名单。单元测试中有列表吗?从解释你要做什么开始。然后解释你被困在哪里。“那我们也许能帮上忙。”希莫塞尔刚做了。你要做的事情更清楚一些。但仍然不清楚你被困在哪里。为什么单元测试比main()
中的工作代码更难?基本上我不知道在这里放置什么:int result=main.findSame(迭代器,x,2);迭代器还是数字迭代器?我尝试的每件事都不是真的在做什么。好吧,不要只是随便尝试;想想看。是什么在main()
中生成迭代器的<代码>数字。什么是编号?名单。单元测试中有列表吗?