1. 环境准备:安装JDK并配置环境变量
在Ubuntu上进行Java项目测试前,需先安装JDK并配置基础环境。打开终端,执行以下命令安装OpenJDK(以11版本为例):
sudo apt update
sudo apt install openjdk-11-jdk
安装完成后,验证安装结果:
java -version # 查看Java运行时版本
javac -version # 查看Java编译器版本
配置JAVA_HOME环境变量(可选但推荐),编辑~/.bashrc文件:
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc # 使配置生效
这些步骤确保系统具备编译和运行Java程序的基础环境。
2. 选择构建工具: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存放测试代码)。3. 添加测试框架依赖:JUnit 5
JUnit是Java最流行的单元测试框架,推荐使用JUnit 5(支持更丰富的特性)。以Maven项目为例,在pom.xml文件的<dependencies>标签内添加以下依赖:
<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>
保存文件后,Maven会自动下载依赖。
4. 编写测试类
在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等断言方法验证预期结果与实际结果是否一致。
5. 运行测试
使用Maven命令运行测试:
mvn test
Maven会自动编译项目代码和测试代码,执行src/test/java下的所有测试方法,并在终端输出测试结果。若所有测试通过,会显示BUILD SUCCESS;若有测试失败,会显示BUILD FAILURE及失败详情。
6. 查看测试报告
Maven会生成详细的HTML测试报告,方便查看测试结果。报告路径为:
target/surefire-reports/index.html
用浏览器打开该文件,可查看每个测试方法的执行结果、耗时及失败原因(若有)。
7. 扩展:集成测试与性能测试
集成测试:使用JUnit结合Mockito模拟外部依赖(如数据库、API),测试多个组件的交互。需添加Mockito依赖:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
示例代码:
@Test
public void testFindUser() {
// 模拟DatabaseConnection的行为
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)进行微基准测试。添加JMH依赖:
<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>
编写性能测试类:
@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会输出性能测试结果(如吞吐量、平均耗时)。