温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用java junit写测试

发布时间:2026-10-13 08:17:10 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

下面用由浅入深的方式,告诉你如何用 Java + JUnit 写测试(以 JUnit 5 为主,目前最常用)。


一、环境准备

1. 使用 Maven(推荐)

在 pom.xml 中加入:

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>5.10.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 项目结构

src
 ├── main
 │   └── java
 │       └── com.example.Calculator
 └── test
     └── java
         └── com.example.CalculatorTest

二、写一个最简单的测试

被测类

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

测试类(JUnit 5)

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

class CalculatorTest {

    @Test
    void testAdd() {
        Calculator calculator = new Calculator();
        int result = calculator.add(2, 3);
        assertEquals(5, result);
    }
}

✅ 运行方式:

  • IDE(IntelliJ / Eclipse)直接右键运行
  • Maven:mvn test

三、常用断言(Assertions)

assertEquals(expected, actual);
assertNotEquals(a, b);

assertTrue(condition);
assertFalse(condition);

assertNull(obj);
assertNotNull(obj);

assertThrows(Exception.class, () -> method());

assertArrayEquals(new int[]{1,2}, arr);

四、测试生命周期注解

import org.junit.jupiter.api.*;

class LifecycleTest {

    @BeforeAll
    static void initAll() {
        System.out.println("所有测试前执行一次");
    }

    @BeforeEach
    void init() {
        System.out.println("每个测试前执行");
    }

    @Test
    void test1() {}

    @Test
    void test2() {}

    @AfterEach
    void tearDown() {}

    @AfterAll
    static void tearDownAll() {}
}

五、参数化测试(很实用)

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

class ParamTest {

    @ParameterizedTest
    @ValueSource(ints = {1, 2, 3})
    void testWithParams(int num) {
        assertTrue(num > 0);
    }
}

六、异常测试

@Test
void testException() {
    assertThrows(IllegalArgumentException.class, () -> {
        throw new IllegalArgumentException("error");
    });
}

七、Mock 测试(重要)

通常配合 Mockito 使用:

@Test
void testService() {
    UserRepository repo = mock(UserRepository.class);
    when(repo.findName(1)).thenReturn("Tom");

    UserService service = new UserService(repo);
    assertEquals("Tom", service.getName(1));
}

八、JUnit 4 vs JUnit 5 区别(快速对照)

功能 JUnit 4 JUnit 5
测试注解 @Test @Test
前置 @Before @BeforeEach
全局前置 @BeforeClass @BeforeAll
断言 Assert.assertEquals Assertions.assertEquals

九、学习建议

  1. 先写 单元测试(Unit Test)
  2. 一个测试只测一个点
  3. 测试名要清晰:shouldReturnXWhenY
  4. 不依赖数据库/网络(用 Mock)

如果你愿意,可以告诉我:

  • ✅ 你是 新手 / 学生 / 工作用
  • ✅ 想测 普通类 / Spring / Web接口
  • ✅ 用 Maven / Gradle

我可以直接给你对应场景的完整示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手