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'));
}
}
輸出:
在第二個測試用例中,我們使用 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'));
}
}
輸出:
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