1. 准备测试环境
在Ubuntu上进行Java测试前,需确保已安装JDK(推荐OpenJDK 11及以上)和构建工具(如Maven或Gradle)。通过以下命令安装:
sudo apt update
sudo apt install openjdk-11-jdk maven # 安装OpenJDK 11和Maven
验证安装:
java -version # 检查JDK版本
mvn -version # 检查Maven版本
设置JAVA_HOME环境变量(可选但推荐):编辑~/.bashrc文件,添加:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
运行source ~/.bashrc使配置生效。
2. 创建Java项目结构
使用Maven创建标准Java项目(推荐):
mvn archetype:generate -DgroupId=com.example -DartifactId=my-java-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
进入项目目录:
cd my-java-app
项目结构需符合Maven规范:
my-java-app/
├── src/
│ ├── main/java/com/example/ # 主代码目录
│ └── test/java/com/example/ # 测试代码目录(自动生成)
├── pom.xml # Maven配置文件
3. 添加测试框架依赖(以JUnit 5为例)
编辑pom.xml文件,在<dependencies>标签内添加JUnit 5依赖(JUnit Jupiter包含API和引擎):
<dependencies>
<!-- JUnit 5核心依赖 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.3</version> <!-- 使用最新稳定版 -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.3</version>
<scope>test</scope>
</dependency>
</dependencies>
保存后运行mvn install下载依赖。
4. 编写单元测试类
在src/test/java/com/example/目录下创建测试类(如CalculatorTest.java),命名规则为被测试类名+Test。示例如下:
package com.example;
import org.junit.jupiter.api.Test; // JUnit 5测试注解
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用于验证结果是否符合预期(第三个参数为失败时的提示信息)。
5. 运行测试
使用Maven命令运行测试(在项目根目录下执行):
mvn test
Maven会自动编译代码并执行src/test/java目录下的所有测试类。测试结果会输出到控制台,示例如下:
[INFO] Running com.example.CalculatorTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s
[INFO]
[INFO] BUILD SUCCESS
若测试失败,控制台会显示详细的失败信息(如断言错误的具体原因),帮助快速定位问题。
6. 查看测试报告
Maven会自动生成HTML格式的测试报告,位于target/surefire-reports目录下。打开index.html文件,即可查看测试结果的可视化报告(包括通过的测试用例、失败的测试用例及详细信息)。
7. 扩展:使用IDE运行测试(以IntelliJ IDEA为例)
若使用IntelliJ IDEA,可直接通过界面运行测试:
src/test/java目录下的测试类(如CalculatorTest.java)。8. 进阶:性能测试(使用JMH)
若需进行性能测试(如测试方法的执行时间),可使用JMH(Java Microbenchmark Harness)。步骤如下:
pom.xml:<dependencies>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>1.37</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.37</version>
<scope>provided</scope>
</dependency>
</dependencies>
LinkedListBenchmark.java):package com.example;
import org.openjdk.jmh.annotations.*;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@State(Scope.Benchmark) // 标记为基准测试类
@OutputTimeUnit(TimeUnit.MICROSECONDS) // 输出时间单位为微秒
public class LinkedListBenchmark {
private List<Integer> list;
@Setup // 初始化数据
public void setup() {
list = new LinkedList<>();
for (int i = 0; i < 10000; i++) {
list.add(i);
}
}
@Benchmark // 标记为基准测试方法
public void forLoopIteration() {
for (int i = 0; i < list.size(); i++) {
list.get(i);
}
}
@Benchmark
public void forEachIteration() {
list.forEach(item -> {});
}
}
mvn clean install # 编译项目
java -jar target/benchmarks.jar # 执行基准测试
JMH会输出每个测试方法的执行时间、吞吐量等性能指标。