溫馨提示×

Ubuntu Java如何測試代碼

小樊
37
2025-10-05 19:35:20
欄目: 編程語言

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)。
  • 右鍵點擊測試類或測試方法,選擇“Run ‘CalculatorTest’”(運行測試)。
  • IDE會顯示測試結果的彈窗,綠色表示全部通過,紅色表示有失敗。

8. 進階:性能測試(使用JMH)
若需進行性能測試(如測試方法的執行時間),可使用JMH(Java Microbenchmark Harness)。步驟如下:

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

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女