Java 测试:主要框架与工具

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Java 测试:关键框架与工具概览



测试是 Java 专业开发中不可或缺的一部分。没有高质量的测试,就无法保证代码的稳定性、安全性以及符合需求。本文将详细介绍用于测试 Java 应用程序的主要工具和框架,它们将帮助您编写可靠且可维护的代码。



1. JUnit 5 — 单元测试的基础



JUnit 5 (Jupiter) 是 Java 中单元测试的事实标准。它提供了用于组织测试的注解、断言和机制。



关键特性:

  • 注解 @Test、@BeforeEach、@AfterAll 用于管理测试生命周期
  • 使用 @ParameterizedTest 进行参数化测试
  • 嵌套测试 (@Nested) 用于逻辑分组
  • 通过 @ExtendWith 实现扩展 (Extensions)


JUnit 5 简单测试示例:



import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;

class CalculatorTest {

@Test void testAddition() { Calculator calc = new Calculator(); int result = calc.add(2, 3); assertEquals(5, result, "2 + 3 应该等于 5"); }

@Test void testDivisionByZero() { Calculator calc = new Calculator(); assertThrows(ArithmeticException.class, () -> calc.divide(10, 0)); }}


2. Mockito — 创建桩对象和模拟对象



Mockito 是 Java 中最流行的用于创建 mock 对象的框架。它允许将测试类与其依赖项隔离开来。



Mockito 的主要特性:

  • 通过 Mockito.mock() 创建模拟对象
  • 使用 when()...thenReturn() 配置行为
  • 验证方法调用 (verify())
  • 通过 ArgumentCaptor 捕获参数


import static org.mockito.Mockito.*;import org.junit.jupiter.api.Test;

class UserServiceTest {

@Test void testGetUser() { // 为仓库创建模拟对象 UserRepository mockRepo = mock(UserRepository.class); when(mockRepo.findById(1L)).thenReturn(new User("Alice"));

// 将模拟对象注入服务 UserService service = new UserService(mockRepo);

// 执行测试 User user = service.getUser(1L); assertEquals("Alice", user.getName());

// 验证方法已被调用 verify(mockRepo).findById(1L); }}


3. TestNG — 具有扩展功能的 JUnit 替代方案



TestNG 是一个强大的框架,受 JUnit 和 NUnit 启发。它提供了额外的功能:测试依赖、并行执行、测试分组。



TestNG 的显著特点:

  • 注解 @Test、@BeforeSuite、@AfterClass
  • 通过 groups 属性进行测试分组
  • 通过 XML 配置进行参数化
  • 测试间的依赖关系 (dependsOnMethods)


import org.testng.annotations.Test;import static org.testng.Assert.*;

public class MathTest {

@Test(groups = {"smoke", "math"}) public void testSum() { assertEquals(5, Math.addExact(2, 3)); }

@Test(dependsOnMethods = {"testSum"}) public void testMultiply() { assertEquals(6, Math.multiplyExact(2, 3)); }}


4. Selenium WebDriver — Web 界面测试



Selenium 是用于 Web 应用程序自动化测试不可或缺的工具。它支持所有主

推荐