[英]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.