Debian Ja va项目的测试实践指南

在Debian环境下做Ja va项目测试,环境搭建是第一步。别小看这一环,搞顺了后面事半功倍。
一 环境准备
- 安装 OpenJDK,推荐11或17版本:命令行里敲
sudo apt update && sudo apt install openjdk-11-jdk(当然换成openjdk-17-jdk也行)。 - 如果想一劳永逸,把 JA VA_HOME 配到环境变量里 —— 在
~/.bashrc或/etc/profile中加上这两行:
然后export JA VA_HOME=/usr/lib/jvm/ja va-11-openjdk-amd64 export PATH=$JA VA_HOME/bin:$PATHsource一下生效。 - 构建工具直接用
sudo apt install ma ven或gradle,简单省事。 - 最后验证:
ja va -version、ja vac -version、mvn -v或gradle -v,确保一切正常。
二 本地开发与单元测试
环境就绪,就可以用构建工具创建项目了。以 Ma ven 为例,一行命令搞定骨架:
mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=ma ven-archetype-quickstart -DinteractiveMode=false
接下来添加测试依赖。JUnit 5 是当前主流,在 pom.xml 中加入:
org.junit.jupiter:junit-jupiter-api:5.7.0(scope test)org.junit.jupiter:junit-jupiter-engine:5.7.0(scope test)
如果你更习惯 JUnit 4,也可以用 junit:junit:4.13.2(scope test)。
代码写在哪?src/test/ja va 目录下。创建测试类,打上 @Test 注解,用 assertEquals 这类断言方法判断结果。运行测试时,Ma ven 执行 mvn test,报告会生成在 target/surefire-reports/ 里。想手动跑?用 JUnit 5 的 ConsoleLauncher:
ja va -cp "target/classes:target/test-classes:lib/*" org.junit.platform.console.ConsoleLauncher
覆盖率方面,如果团队有要求,可以引入 jacoco-ma ven-plugin,配置好 report 阶段就能生成漂亮的覆盖率报告。
三 集成测试与常用框架
单测通过只是第一步,集成测试才能真正暴露模块间的问题。选哪个框架?
- JUnit 5:功能丰富,单元和集成测试都能驾驭。
- TestNG:更灵活,参数化、数据驱动、复杂套件组织都不在话下。
- Mockito:创建 mock 或 stub,隔离外部依赖,让单元测试更专注。
- Spring Boot Test:Spring 项目的集成测试利器,
@SpringBootTest、@MockBean用起来非常顺手。
实践中的一个小技巧:用 @Tag("integration") 标记集成测试,然后在 Ma ven 中通过 surefire(跑单元测试)和 failsafe(跑集成测试)分别执行。failsafe 绑定在 integration-test 和 verify 阶段,很合理。另外,测试数据尽量用内存数据库(如 H2)、嵌入式 Servlet 容器或 Testcontainers,这样每次运行环境一致,不会因为外部依赖的差异而莫名失败。
四 持续集成与自动化
本地测试完,下一步是让 CI 替你跑。Jenkins 是经典方案:
- 安装:导入 Jenkins GPG 密钥,添加官方仓库,
sudo apt install jenkins,然后sudo systemctl start jenkins。 - 配置 Job:选择 Ma ven Integration 插件,源码管理用 Git,构建步骤写
mvn clean test或mvn verify(后者会包含集成测试和报告归档)。 - 触发方式:SCM 轮询或 Webhooks,实现提交代码自动构建。
构建报告同样要归档——surefire-reports/、覆盖率报告都存下来。如果团队有质量门禁要求,可以结合阈值或质量插件,不达标就不允许合入。
五 打包与验收测试
所有测试通过后,用 mvn package 打出一个 JAR 包(通常位于 target/)。但交付前,验收测试不能省。
验收测试的思路:在 CI 的 verify 阶段运行端到端或系统级测试。比如用 Docker 启动依赖服务(数据库、消息队列等),然后跑 API 测试(REST Assured 很好用)或 UI 测试。测试结果、日志和产物都归档,作为发布准入的依据。这一步做扎实了,上线才有底气。