单元测试与日志:给代码装上安全带

「我在自己电脑上是好的」——这句话在团队里几乎等于没说。测试和日志,让正确性可验证、问题可追溯。

JUnit 5 快速上手

pom.xml 加依赖(版本按 IDEA 提示或 Spring Initializr 常见即可):

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

测试类放在 src/test/java

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

class CalculatorTest {
    @Test
    void add_shouldWork() {
        assertEquals(8, Calculator.add(3, 5));
    }

    @Test
    void divide_byZero_shouldThrow() {
        assertThrows(IllegalArgumentException.class,
            () -> Calculator.divide(1, 0));
    }
}

运行测试:IDEA 绿色三角,或 mvn test

测什么?

优先测:

  • 纯逻辑(计算、校验、转换)
  • 边界(空列表、0、最大值)
  • 非法输入是否按预期失败

先别追求 100% 覆盖率,追求 关键路径有保护

日志:比 System.out 正经

加 SLF4J + 简单实现(示例用 Logback 经典组合,入门也可先用 java.util.logging,但业界主流是 SLF4J):

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class StudentService {
    private static final Logger log = LoggerFactory.getLogger(StudentService.class);

    public void add(Student s) {
        log.info("新增学生 name={}", s.getName());
        // ...
    }
}

级别直觉:

  • debug:开发细节
  • info:关键业务节点
  • warn:可恢复的异常情况
  • error:失败需要关注

生产环境靠日志定位问题,而不是靠猜。

本周练习清单

写在最后

测试是对未来的投资。你会改代码,测试帮你守住「改完别塌」。

至此,语言 + 工程化基础 段落完成。下周开始进阶:泛型与面向接口的更深层用法。


YoungGc · Eden手记
学习是第一生产力。

posted @ 2026-08-04 10:00  Eden手记  阅读(1)  评论(0)    收藏  举报