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會輸出每個測試方法的執行時間、吞吐量等性能指標。