.NET 幫助

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

發佈 2024年9月29日
分享:

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

在本文中,我們將討論 Junit Java 測試執行,並了解不同的技術來完成它。 我們還將使用撰寫一個 PDF 創建的測試案例 IronPDF for 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>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<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>
VB   C#

撰寫您的第一個 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;
    }
}
' Calculator.java
Public Class Calculator
	Public Function add(ByVal a As Integer, ByVal b As Integer) As Integer
		Return a + b
	End Function
	Public Function subtract(ByVal a As Integer, ByVal b As Integer) As Integer
		Return a - b
	End Function
End Class
VB   C#

單元測試類別

// 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.java
Private org As import
Private Shared As import
Public Class CalculatorTest
	Test Public Sub testAdd()
		Dim calculator As New Calculator()
		assertEquals(5, calculator.add(2, 3))
	End Sub
	Test Public Sub testSubtract()
		Dim calculator As New Calculator()
		assertEquals(1, calculator.subtract(3, 2))
	End Sub
End Class
VB   C#

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));
    }
}
Private org As import
Private org As import
Private Shared As import
Public Class CalculatorParameterizedTest
	ParameterizedTest CsvSource({ "1, 1, 2", "2, 3, 5", "10, 20, 30" }) Public Sub testAdd(ByVal a As Integer, ByVal b As Integer, ByVal expected As Integer)
		Dim calculator As New Calculator()
		assertEquals(expected, calculator.add(a, b))
	End Sub
End Class
VB   C#

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

例外測試

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

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

public float divide(int a, int b) {
        return a / b;
    }
public float divide(int a, int b) {
        return a / b;
    }
Public Function divide(ByVal a As Integer, ByVal b As Integer) As Single
		Return a \ b
End Function
VB   C#

測試類:

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));
    }
}
Private org As import
Private Shared As import
Friend Class CalculatorExceptionTest
	Test Public Sub testDivisionByZero()
		Dim calculator As New Calculator()
		assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0))
	End Sub
End Class
VB   C#

輸出

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>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<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>
VB   C#

完成後,您可以撰寫測試案例以使用 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());
    }
}
Private org As import
Private Shared As import
Private com As import
Private java As import
Private java As import
Friend Class PdfGenerationTest
	Test Public Sub testPdfGeneration()
		' Define HTML content
		Dim htmlContent As String = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
		' Convert HTML to PDF
		Dim pdfDocument As PdfDocument = PdfDocument.renderHtmlAsPdf(htmlContent)
		' Save PDF to file
		pdfDocument.saveAs("output.pdf")
		' Assert PDF generation
		assertTrue((New File("output.pdf")).exists())
	End Sub
End Class
VB   C#

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

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

結論

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

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

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

< 上一頁
Socket io .NET(它如何為開發者運作)
下一個 >
Microsoft.Extensions.DependencyInjection .NET 6(處理PDF)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >