.NET 幫助

Junit Java(如何為開發者工作)

Kannaopat Udonpant
坎納帕特·烏頓潘
2024年9月29日
分享:

JUnit 框架是 Java 應用程式中廣泛使用的單元測試框架。 它提供了一種簡單、優雅的方式來編寫和執行可重複的測試。 使用 JUnit Java,開發者可以透過撰寫單元測試來驗證他們的軟體的各個方面,從而確保其程式碼按預期運行。 此外,開發者還可以撰寫測試類別來組織測試案例,並使用測試執行器來執行測試和獲取回饋。 單元測試框架不僅有助於識別漏洞,還能促進更好的設計和可維護性。

在本文中,我們將討論 Junit Java 測試執行,並了解不同的技術來完成它。 我們還將使用撰寫一個 PDF 創建的測試案例IronPDFfor Java.

JUnit 的歷史與演變

JUnit 測試框架是由 Kent Beck 和 Erich Gamma 這兩位軟體開發社群的領軍人物創建的。 自1990年代末創立以來,JUnit經歷了多次迭代,每次迭代都添加了更多功能並改善了使用便利性。 目前的穩定版本 JUnit 5,也稱為 JUnit Jupiter,相較於其前身引入了多項增強功能,使其更加穩健且靈活。

JUnit 的主要功能

  1. 註解:JUnit 使用註解來定義和配置測試。 常見的註釋包括:

    • @Test:將方法標記為測試方法。

    • @BeforeEach:在每個測試之前執行。

    • @AfterEach:在每個測試後運行。

    • @BeforeAll:在所有測試之前運行一次。
    • @AfterAll:在所有測試結束後運行一次。
  2. 斷言:斷言用於檢查測試結果是否符合預期結果。 一些常見的斷言包括:

    • 斷言相等(預期,實際):檢查兩個值是否相等。
      • assertTrue(條件):檢查條件是否為真。
      • assertFalse(條件)檢查條件是否為假。
      • assertNull(對象):檢查物件是否為空。
      • assertNotNull(對象):檢查物件是否不為空。
  1. 參數化測試:JUnit 支援參數化測試,允許使用不同的參數執行相同的測試,更高效地運行測試。

  2. 測試套件:可以將測試分組成測試套件,以便一起執行多個測試。

  3. 例外測試:JUnit 可以測試方法是否拋出預期的例外情況。

  4. 與建置工具的整合:JUnit 無縫整合廣泛使用的建置工具,如 Maven。 這使您可以在構建過程中自動運行測試和測試代碼,並在構建過程中有任何測試失敗時通知開發人員。

    Junit Java(對開發人員的運作方式):圖 1 - 使用 JUnit 的單元測試

與構建工具的集成

JUnit 與廣泛使用的構建工具如 Maven 無縫整合。 這使您能夠在建置過程中自動執行測試。

要使用 JUnit 和 Maven,請將以下依賴項添加到你的 pom.xml 文件中:

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

撰寫您的第一個 JUnit 測試

在進入更複雜的範例之前,讓我們先從一個簡單的單元測試案例開始。 我們將為一個基本計算器類別編寫測試。

計算器類別

// Calculator.java
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    public int subtract(int a, int b) {
        return a - b;
    }
}
// Calculator.java
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    public int subtract(int a, int b) {
        return a - b;
    }
}

單元測試類別

// CalculatorTest.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        assertEquals(5, calculator.add(2, 3));
    }
    @Test
    public void testSubtract() {
        Calculator calculator = new Calculator();
        assertEquals(1, calculator.subtract(3, 2));
    }
}
// CalculatorTest.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        assertEquals(5, calculator.add(2, 3));
    }
    @Test
    public void testSubtract() {
        Calculator calculator = new Calculator();
        assertEquals(1, calculator.subtract(3, 2));
    }
}

CalculatorTest 範例包含兩個測試方法,一個是測試加法:testAdd,另一個是測試減法:testSubtract。 每個方法都會創建一個 Calculator 類的實例,並使用斷言來驗證 add 和 subtract 方法的正確性。

輸出

Junit Java(對開發人員的運作方式):圖 2 - 運行 Junit 測試的輸出結果

進階 JUnit 功能

參數化測試

參數化測試允許您使用不同的參數集來運行相同的測試。 這對於測試方法具有廣泛的輸入範圍非常有用。

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorParameterizedTest {
    @ParameterizedTest
    @CsvSource({
        "1, 1, 2",
        "2, 3, 5",
        "10, 20, 30"
    })
    public void testAdd(int a, int b, int expected) {
        Calculator calculator = new Calculator();
        assertEquals(expected, calculator.add(a, b));
    }
}
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorParameterizedTest {
    @ParameterizedTest
    @CsvSource({
        "1, 1, 2",
        "2, 3, 5",
        "10, 20, 30"
    })
    public void testAdd(int a, int b, int expected) {
        Calculator calculator = new Calculator();
        assertEquals(expected, calculator.add(a, b));
    }
}

在此範例中,testAdd 方法根據 CsvSource 的指定,以不同的輸入組合運行三次。

例外測試

有時候,你需要驗證某個方法拋出預期的例外。

將以下方法添加到您的計算器類別中。

public float divide(int a, int b) {
        return a / b;
    }
public float divide(int a, int b) {
        return a / b;
    }

測試類:

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorExceptionTest {
    @Test
    public void testDivisionByZero() {
        Calculator calculator = new Calculator();
        assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0));
    }
}
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorExceptionTest {
    @Test
    public void testDivisionByZero() {
        Calculator calculator = new Calculator();
        assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0));
    }
}

輸出

Junit Java(對開發者的運作方式):圖3 - 運行 Junit 測試的輸出結果

將 IronPDF 與 JUnit 集成在 Java 中

IronPDF是一個強大的庫,用於在 Java 應用程式中生成 PDF 文件。 將 IronPDF 與 JUnit 整合,可以讓您自動化測試 PDF 生成功能,確保您的文件能夠準確製作並符合所需的規範。

Junit Java(對開發者的運作方式):圖4 - IronPDF首頁:Java PDF 庫

要將IronPDF與JUnit集成,首先需要在您的專案依賴項中包含IronPDF庫。

<dependencies>
<!--Adds IronPDF Java. Use the latest version in the version tag.-->
    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>20xx.xx.xxxx</version>
    </dependency>
<!--Adds the slf4j logger which IronPDF Java uses.-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.3</version>
    </dependency>
</dependencies>
<dependencies>
<!--Adds IronPDF Java. Use the latest version in the version tag.-->
    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>20xx.xx.xxxx</version>
    </dependency>
<!--Adds the slf4j logger which IronPDF Java uses.-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.3</version>
    </dependency>
</dependencies>

完成後,您可以撰寫測試案例以使用 IronPDF 的 API 驗證 PDF 生成邏輯。以下是您可以如何使用 JUnit 測試 IronPDF 的 PDF 生成的範例:

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import com.ironsoftware.ironpdf.*;
import java.io.File;
import java.io.IOException;
class PdfGenerationTest {
    @Test
    public void testPdfGeneration() throws IOException {
        // Define HTML content
        String htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
        // Convert HTML to PDF
        PdfDocument pdfDocument = PdfDocument.renderHtmlAsPdf(htmlContent);
        // Save PDF to file
        pdfDocument.saveAs("output.pdf");
        // Assert PDF generation
        assertTrue(new File("output.pdf").exists());
    }
}
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import com.ironsoftware.ironpdf.*;
import java.io.File;
import java.io.IOException;
class PdfGenerationTest {
    @Test
    public void testPdfGeneration() throws IOException {
        // Define HTML content
        String htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
        // Convert HTML to PDF
        PdfDocument pdfDocument = PdfDocument.renderHtmlAsPdf(htmlContent);
        // Save PDF to file
        pdfDocument.saveAs("output.pdf");
        // Assert PDF generation
        assertTrue(new File("output.pdf").exists());
    }
}

在此範例中,我們建立一個名為 testPdfGeneration 的測試案例。()使用 IronPDF 將 HTML 內容轉換為 PDF 文件。 然後,測試透過檢查檔案系統上的存在性來驗證 PDF 檔案是否成功生成。

Junit Java(開發人員如何使用):圖5 - 執行上述 Junit 測試的控制台輸出,檢查 PDF 創建成功

結論

JUnit 是一個多功能的 Java 測試框架,使撰寫和執行自動化測試的過程變得更簡單。 通過利用參數化測試、異常處理和註釋等功能,開發人員可以確保其代碼庫的可靠性和穩健性。

整合IronPDF透過 JUnit,可以全面測試 Java 應用程式中的 PDF 生成功能,確保生成的文件符合品質標準並遵守規範。 透過結合 JUnit 和 IronPDF 的強大功能,開發人員可以精簡測試流程,自信地交付高品質的軟體。

如需了解更多關於如何將 HTML 字串渲染為 PDF,請訪問以下內容:連結.

Kannaopat Udonpant
坎納帕特·烏頓潘
軟體工程師
在成為軟體工程師之前,Kannapat 在日本北海道大學完成了環境資源博士學位。在攻讀學位期間,Kannapat 也成為了車輛機器人實驗室的成員,該實驗室隸屬於生物生產工程學系。2022 年,他利用自己的 C# 技能,加入了 Iron Software 的工程團隊,專注於 IronPDF 的開發。Kannapat 珍視這份工作,因為他可以直接向負責撰寫大部分 IronPDF 程式碼的開發人員學習。除了同儕學習外,Kannapat 還享受在 Iron Software 工作的社交方面。當他不在撰寫程式碼或文件時,Kannapat 通常會在 PS5 上玩遊戲或重看《最後生還者》。
< 上一頁
Socket io .NET(它如何為開發者運作)
下一個 >
Microsoft.Extensions .DependencyInjection .NET 9(使用PDF)