亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通用方法的 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 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號