簡體   English   中英

JUnit測試遞歸方法

[英]JUnit testing recursive method

我使用遞歸方法制作了一個類,該類檢查兩個數組是否相同,現在我想用JUnit對其進行測試。 所以我的問題是:

我應使用哪種方法測試無值,負值和極限值?

提前致謝。 最好的祝福

ps:這是我到目前為止所做的:

 @Test
 public void testOfTheTests(){
     System.out.println("Test");
     int[]a={1,2,3,4,5,6,7};
     int[]b={7,6,5,4,3,2,1};
     Boolean result = Main.equalsHelper2(a,b,0,6);
     Boolean expResult=true;
     // assertEquals(expResult,result);
     Assert.assertNotNull(result);
}

首先:重構測試方法的方法名稱。

equalsHelper2()確實是一個錯誤選擇的名稱。
isSameContent()類的東西更好。
測試方法也是如此: testOfTheTests()
它意味着一切,它實際上是一種反模式命名。

第二:問問自己有關方法的API:輸入和輸出。

例如:如果一個或兩個數組為null,該方法應返回什么?
你應該拋出異常嗎? 返回false 所以……

其他示例:為什么使用Boolean而不是boolean作為測試方法的返回類型?
null是否是有效的返回值? 如果是,為什么? 如果不是,請使用boolean

為此,最好的方法是進行TDD:為每個用例逐步創建一個測試方法,並為每個測試方法賦予一個相關的名稱: isSameContent_with_empty_array()isSameContent_with_same_content()isSameContent_with_distinct_content()等。
首先編寫第一個測試方法來實現它,該方法明確指定該方法的實際輸入和預期輸出,然后調整實現,直到測試通過。

然后,重構是否需要實現/測試,然后繼續下一個測試方法。

您所讀到的“無值,負值和有限值”是指測試數組可以采用的所有不同形式,無值或負值不適用於您的案例,因此您需要考慮適用於以下情況的測試案例:您的方法。

以下是您可能要添加的一些測試用例:

  • 一個數組為空
  • 兩個數組都為空
  • 數組長度不同
  • 這兩個元素的順序相同
  • 數組具有相同的元素,但順序不同
  • 如果傳遞給您的方法的數組索引無效
  • ...
  • ...

這是兩個示例:

@Test
 public void testEqual(){
     int[]a={1,2,3,4,5,6,7};
     int[]b={7,6,5,4,3,2,1};
     Assert.assertEquals(a,b);
     Assert.assertTrue(Main.equalsHelper2(a,b,0,6));
}


@Test
 public void testDifferent(){
     int[]a={1,1,1,1,1,1,1};
     int[]b={7,6,5,4,3,2,1};
     Assert.assertNotEquals(a,b);
     Assert.assertFalse(Main.equalsHelper2(a,b,0,6));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM