首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Eclipse 中使用 Ant 執行 JUnit 單元測試完整教程

     編輯:Java 相關知識

在 Eclipse 內通過 Ant 腳本編譯、運行 JUnit 測試、生成報告,是掌握自動化構建基礎的經典實踐。本文提供最小化可運行項目結構、build.xml 全量配置、Eclipse Ant Runtime 設置與運行驗證步驟。

一、 項目目錄結構

AntTest/
├─ src/
│   └─ com/test/
│       ├─ ABS.java              # 被測類
│       └─ ABSTest.java          # JUnit Test Case (繼承 TestCase 或 @Test 註解)
├─ lib/
│   └─ junit.jar                 # JUnit 4.x/3.x JAR (或由 Ant 路徑引用)
├─ build.xml                     # Ant 構建腳本
└─ bin/                          # 編譯輸出目錄 (自動創建)

二、 Eclipse Ant Runtime 必須配置

Eclipse 內置 Ant 不自帶 JUnit 任務所需類,必須手動添加:

  1. Window → Preferences → Ant → Runtime → Classpath 選中 Ant Home Entries (Default)。
  2. 點擊右側 Add External JARs...,選擇 ECLIPSE_HOME/plugins/org.junit_/junit.jar (或項目 lib/junit.jar)。
  3. Apply and Close。

原理:<junit> 任務類在 junit.jar 中,Ant Runtime Classpath 必須可見才能加載任務實現。

三、 build.xml 完整配置 (含詳細註釋)

<?xml version="1.0" encoding="UTF-8"?>
<project name="AntJUnitDemo" default="junit" basedir=".>

  <!-- 屬性定義 -->
  <property name="run.classpath" value="bin"/>           <!-- 編譯輸出 -->
  <property name="run.srcpath" value="src"/>             <!-- 主源碼 -->
  <property name="test.srcpath" value="src"/>            <!-- 測試源碼 (同目錄) -->
  <property name="test.report" value="report"/>          <!-- 報告輸出 -->
  <property name="lib.dir" value="lib"/>                 <!-- 依賴 JAR 目錄 -->

  <!-- 編譯類路徑 (lib 下所有 JAR) -->
  <path id="compile.path">
    <fileset dir="${lib.dir}">
      <include name="**/*.jar"/>
    </fileset>
  </path>

  <!-- 目標: 編譯主碼與測試碼 -->
  <target name="compile">
    <javac destdir="${run.classpath}" srcdir="${run.srcpath}" classpathref="compile.path" includeantruntime="false"/>
    <javac destdir="${run.classpath}" srcdir="${test.srcpath}" classpathref="compile.path" includeantruntime="false"/>
  </target>

  <!-- 目標: 運行 JUnit 測試 (依賴 compile) -->
  <target name="junit" depends="compile">
    <tstamp/>  <!-- 生成 DSTAMP/TSTAMP 用於報告目錄命名 -->
    <mkdir dir="${test.report}"/>
    <mkdir dir="${test.report}/framework-${DSTAMP}-${TSTAMP}"/>

    <junit printsummary="yes" haltonfailure="no">  <!-- 打印摘要、失敗不中斷構建 -->
      <classpath>
        <pathelement path="${run.classpath}"/>       <!-- 編譯輸出類 -->
        <fileset dir="${lib.dir}">                   <!-- 依賴 JAR -->
          <include name="**/*.jar"/>
        </fileset>
      </classpath>

      <formatter type="plain" usefile="false"/>      <!-- 控制台輸出純文本摘要 -->
      <formatter type="xml"/>                        <!-- 生成 XML 報告供 Jenkins/報告工具解析 -->

      <!-- 批量掃描測試類: **/*Test.java -->
      <batchtest fork="yes" todir="${test.report}/framework-${DSTAMP}-${TSTAMP}">
        <fileset dir="${test.srcpath}">
          <include name="**/*Test.java"/>
        </fileset>
      </batchtest>
    </junit>
  </target>

</project>

四、 運行與驗證

  1. Package Explorer 中右鍵 build.xml → Run As → Ant Build。
  2. Console 輸出示例:
Buildfile: ...\AntTest\build.xml
compile:
    [javac] Compiling 2 source files to ...\bin
junit:
    [mkdir] Created dir: ...\report\framework-20240515-143022
    [junit] Running com.test.ABSTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.12 sec
BUILD SUCCESSFUL
Total time: 2 seconds
  1. 報告目錄 report/framework-YYYYMMDD-HHMMSS/ 下生成 TEST-com.test.ABSTest.xml (XML 格式) 及可選純文本文件。
  2. 若有 Failure/Error,Console 會輸出堆棧跟蹤,XML 報告含 <failure>/<error> 詳情。

五、 關鍵配置解析

元素/屬性作用注意點
fork="yes"獨立 JVM 運行測試隔離類加載器、允許測試調用 System.exit()、加載本地庫
batchtest批量掃描測試類**/*Test.java 命名約定可自定義
formatter type="xml"生成標準 XML 報告CI/CD 集成必備
haltonfailure="no"測試失敗不中斷構建便於一次看到所有失敗
includeantruntime="false"javac 不包含 Ant 自帶類庫避免版本衝突,構建可復現

六、 進階擴展

  • JUnit 5:需 junit-platform-console-standalone JAR,任務改用 <java> ... --scan-classpath ... 或官方 junitlauncher 任務 (Ant 1.10.7+)。
  • 代碼覆蓋率:集成 JaCoCo <taskdef> + <jacoco:coverage> 包裹 <junit>。
  • 並行測試:<junit> 不直接支持並行,可拆分多 batchtest 並用 <parallel> 包裹 (需線程安全測試代碼)。
  • Eclipse 外部構建器:Project Properties → Builders → New → Ant Build 選 build.xml,保存項目自動觸發測試。

掌握 Ant + JUnit 基礎流程,是理解 Maven Surefire、Gradle Test、CI Pipeline 內部機制的紮實基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved