簡體   English   中英

帶有斷言的JUnit測試方法

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

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