为了账号安全,请及时绑定邮箱和手机立即绑定

通用方法的 JUnit 测试用例

通用方法的 JUnit 测试用例

喵喵时光机 2021-09-12 10:41:13
请原谅我提出了潜在的冗余问题,但我最近一直在学习泛型,并且对如何测试它们有点不知所措。这是我在集合中查找最小值的方法的代码:public static <T> T min(Collection<T> c, Comparator<T> comp) {  if (c == null || comp == null) {     throw new IllegalArgumentException("Collection or comparator is null.");  }  if (c.isEmpty()) {     throw new NoSuchElementException("Collection is empty.");  }  Iterator<T> itr = c.iterator();  T min = itr.next();  if (itr.hasNext()) {     for (T i : c) {        if (comp.compare(i, min) < 0) {           min = i;        }     }  }  return min;}这是我为此方法准备的最小测试用例:public class SelectorTest{  @Test  public void min() {     Comparator<Integer> intSort = new IntegerSort();     Integer[] test = {2, 8, 7, 3, 4};     int expected = 2;     int actual = Selector.min(test, intSort);     Assert.assertEquals(expected, actual);  }  public static class IntegerSort implements Comparator<Integer> {     public int compare(Integer o1, Integer o2) {        return Integer.compare(o1, o2);     }  }}我从这段代码中收到的编译器错误如下:required:java.util.Collection<T>,java.util.Comparator<T>found: java.lang.Integer[],java.util.Comparator<java.lang.Integer>显然,我通过测试用例传递的参数不是应该传递的内容,但我的想法是这样的:我传递一个整数数组,它是一个集合,我给它一个特定的整数比较器,如 min 方法所要求。我应该如何修复这个测试用例以有效地以这种方式工作,并且不仅可以使用整数,还可以使用 min 方法能够做的任何类型的集合?我以前从未成功编写过通用测试用例,因此我不知道如何进行此操作。
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

你的问题与泛型无关。当该方法需要一个集合时,您不能将数组作为参数传递。数组不实现 Collection 接口。如果您要传递一个 ArrayList 的实例,它应该可以正常工作。


查看完整回答
反对 回复 2021-09-12
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信