Java 中的單元測試

Rupam Yadav 2022年5月1日
Java 中的單元測試

本文將討論 Java 中的單元測試。有幾種型別的測試,單元測試就是其中之一。

單元測試涉及對隔離元件(如類和方法)的測試。這是有效的,因為我們可以很好地控制整個程式的特定部分。

在 Java 中使用 JUnit 測試框架進行單元測試

下面的例子有一個簡單的程式,它使用 calculateOccurrences() 方法返回字串中指定字元的出現總數。

calculateOccurrences() 方法接收兩個引數:stringToUse,第二個引數是 characterToFind

在函式中,我們遍歷字串並檢查字串中是否有任何字元與 characterToFind 匹配,如果匹配,則增加 charCount。我們使用適當的引數呼叫 main() 函式。

我們需要對其進行測試才能知道它是否正常工作;我們將在本教程的下一部分執行此操作。

public class JavaTestExample {

    public static void main(String[] args) {
        int getTotalOccurrences = calculateOccurrences("pepper", 'p');
        System.out.println(getTotalOccurrences);
    }

    public static int calculateOccurrences(String stringToUse, char characterToFind) {
        int charCount = 0;
        for (int i = 0; i < stringToUse.length(); i++) {
            if (stringToUse.charAt(i) == characterToFind) {
                charCount++;
            }
        }

        return charCount;
    }

}

輸出:

3

為了對 Java 程式進行單元測試,我們使用了專門為 Java 中的單元測試而設計的 JUnit 測試框架。我們使用以下 maven 依賴項匯入它。

  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
  </dependency>

為了測試不同的場景,我們建立測試用例,然後檢查測試是否通過給定條件。

對於此示例,我們使用可從 https://www.jetbrains.com/idea/ 下載的 Intellij IDEA IDE。

我們將主要的 Java 和測試檔案儲存在同一個包中,以防止任何訪問錯誤。

下面是第一個測試用例;我們用 @Test 註釋該方法以使其成為測試用例。JUnit 為我們提供了幾種斷言方法來幫助我們編寫測試。

為了測試返回值是否等於我們的期望,我們使用 assertEquals() 方法。

我們在這個程式中使用的 assertEquals() 方法有兩個引數;第一個是我們通過 1 的預期結果。

第二個引數是 calculateOccurrences() 方法在傳遞 this is an java example 字串和 i 作為要查詢的字元時的實際返回值。

我們執行測試,IDE 中會彈出 Run 視窗。請注意,輸出中的視窗標題顯示測試失敗:1 次測試中的 1 次

此外,我們得到帶有 AssertionError 的訊息,預期值為 1,實際值為 2。

測試失敗是因為我們預期結果為 1,即 this is a java example 字串中 i 的數量,但實際上,其中 i 出現了兩次,因此測試失敗。

測試用例 1:

import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class JavaTest {

    @Test
    public void testCheckChar(){
        assertEquals(1, JavaTestExample.calculateOccurrences("this is a java example", 'i'));
    }
}

輸出:

Java 中的單元測試 - 測試用例 1

在第二個測試用例中,我們使用 2 作為具有相同字串的預期結果,在輸出中,我們得到一個綠色的勾號,帶有訊息 Test Passed:1 of 1 test。這是因為預期值等於實際值。

測試用例 2:

import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class JavaTest {

    @Test
    public void testCheckChar(){
        assertEquals(2, JavaTestExample.calculateOccurrences("this is an java example", 'i'));
    }
}

輸出:

Java 中的單元測試 - 測試用例 2

Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn