[英]JUnit testing method with assertions
類A中的isSorted()實例方法有一個錯誤:
public class A {
private int[] a;
public A(int[] a) { this.a = a; }
/** Return true if this A object contains an array sorted
* in nondecreasing order; else false. */
public boolean isSorted() {
for(int i=1; i<a.length-1; i++) {
if(a[i] < a[i-1]) return false;
}
return true;
}
}
編寫一個JUnit測試方法testIsSorted(),該方法將由於此錯誤而失敗,但在修復該錯誤時將通過。 (假定沒有定義setUp()方法。)這是答案:
public void testIsSorted() {
int[] array = {2, 1};
A haha = new A(array);
assertFalse(haha.isSorted);
}
首先,錯誤在哪里,我似乎無法找到它。 其次,它應該是assertTrue(haha.isSorted),因為當其assertFalse時它將通過,因為該數組是降序排列,因此isSorted將返回false,assertFalse(false)將返回true,而assertTrue(false)將返回假。
錯誤就在網上
for(int i=1; i<a.length-1; i++) {
由於數組索引從0開始,所以i
的定義應該是int i=0
,而不是1
。 索引1
指向數組的第二個元素。
所述assertFalse
語句檢查該isSorted()
方法返回false
對於給定的數組{2,1}
isSorted()
方法檢查是否有條目小於前一個條目(相反,每個條目都大於或等於前一個條目)。 在該示例中,它會返回false
,因為2
在索引0
大於1
在索引1
。 因此, assertFalse
是案例的正確斷言。
您也可以像這樣進行測試(注意array
的顛倒順序)。
public void testIsSorted() {
int[] array = {1, 2};
A haha = new A(array);
assertTrue(haha.isSorted());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.