首先明确一个核心要点:若想在 Ubuntu 上流畅地测试 Java 项目,环境配置、工具选型、框架整合这三步缺一不可。只要每一步都做到位,后续测试流程会水到渠成。下面我们逐步展开。
首先搭建最基础的 Java 运行时环境与编译器。打开终端,输入以下命令安装 OpenJDK 11(版本可根据需求灵活调整,但 11 作为长期支持版,稳定性最佳):
sudo apt update
sudo apt install openjdk-11-jdk
安装完成后务必验证环境是否生效:
java -version # 查看 Java 运行时版本
javac -version # 确认编译器版本
接下来建议养成配置 JAVA_HOME 环境变量的习惯。虽然不配置也能临时使用,但许多构建工具和 IDE 会自动查找该变量,提前配置可避免后续各种异常。编辑 ~/.bashrc 文件,追加以下内容:
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
至此,编译和运行 Java 程序的基础环境已准备就绪。下面这张图汇总了当前状态:

环境搭建完成后,需要选择一款顺手的构建工具。Maven 和 Gradle 是主流选择,这里以 Maven 为例(Gradle 的使用逻辑大同小异)。安装十分直接:
sudo apt install maven
验证安装结果:
mvn -version
如果你手头还没有现成项目,可以快速创建一个标准 Maven 项目骨架:
mvn archetype:generate -DgroupId=com.example -DartifactId=my-java-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
然后进入项目目录:
cd my-java-project
Maven 会自动生成 src/main/java(存放主代码)和 src/test/java(存放测试代码)的目录结构,省去手动建立目录的麻烦。
测试框架方面,JUnit 5 是目前 Java 生态中最主流的单元测试工具,功能丰富,推荐使用。在 Maven 项目的 pom.xml 文件的 标签内添加以下依赖(版本建议使用最新稳定版,例如 5.9.3):
org.junit.jupiter
junit-jupiter-api
5.9.3
test
org.junit.jupiter
junit-jupiter-engine
5.9.3
test
保存后 Maven 会自动拉取依赖,无需手动干预。
现在可以开始编写测试类。在 src/test/java 目录下新建一个类,例如 CalculatorTest.java,对应主代码中的 Calculator 类。示例代码如下:
package com.example;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class CalculatorTest {
@Test
public void testAdd() {
Calculator calculator = new Calculator();
int result = calculator.add(2, 3);
assertEquals(5, result, "2+3应等于5");
}
@Test
public void testSubtract() {
Calculator calculator = new Calculator();
int result = calculator.subtract(5, 2);
assertEquals(3, result, "5-2应等于3");
}
}
测试方法使用 @Test 注解标记,断言方法如 assertEquals 用于验证预期结果与实际结果是否一致。逻辑清晰后,运行测试只需一条命令:
mvn test
Maven 会自动编译主代码和测试代码,然后执行 src/test/java 下所有带有 @Test 注解的方法。终端会输出结果——全部通过显示 BUILD SUCCESS,若有失败则显示 BUILD FAILURE 并给出详细失败信息。
测试报告同样现成可用,Maven 生成的是 HTML 格式,位于 target/surefire-reports/index.html。用浏览器打开,每个测试方法的执行结果、耗时、失败原因一目了然。
如果仅靠单元测试不够,还可以扩展集成测试。常见做法是使用 Mockito 模拟外部依赖(如数据库、API),测试多个组件的交互。在 pom.xml 中添加 Mockito 依赖:
org.mockito
mockito-core
5.3.1
test
写一个示例加深理解:
@Test
public void testFindUser() {
DatabaseConnection mockConnection = Mockito.mock(DatabaseConnection.class);
when(mockConnection.findUserById(1)).thenReturn(new User("Alice"));
UserService userService = new UserService(mockConnection);
User user = userService.findUserById(1);
assertEquals("Alice", user.getName());
verify(mockConnection).findUserById(1);
}
性能测试方面,JMH(Java Microbenchmark Harness)是行业标准。添加依赖:
org.openjdk.jmh
jmh-core
1.37
org.openjdk.jmh
jmh-generator-annprocess
1.37
provided
然后编写一个简单的基准测试类:
@State(Scope.Benchmark)
@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.SECONDS)
public class StringConcatBenchmark {
@Benchmark
public String testStringConcat() {
return "Hello" + "World";
}
}
运行方式:
mvn clean install
java -jar target/benchmarks.jar
JMH 会输出吞吐量、平均耗时等性能指标,对代码优化极具参考价值。
从环境搭建到性能测试,这套流程覆盖了 Java 项目在 Ubuntu 上测试的主流场景。实际应用中可根据项目规模灵活取舍——小项目仅用 JUnit 即可,大项目则往往需要 Mockito 和 JMH 的配合。工具是固定的,但需求是灵活的,按需组合即可。
