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

Ant 建構腳本整合 JUnit 與 Checkstyle 實現自動化編譯測試檢查

     編輯:Java 相關知識

建構腳本總覽

提供標準 Ant build.xml 模板,涵蓋:原始碼編譯、Javadoc 生成、JUnit 測試執行、Checkstyle 程式碼規範檢查、打包 JAR、清理輸出目錄。

完整 build.xml

<?xml version="1.0" encoding="gb2312"?>
<project name="Test Project" default="all" basedir=".">
  <!-- 路徑屬性 -->
  <property name="src.code" value="src"/>
  <property name="src.junit" value="junit"/>
  <property name="lib.dir" value="lib"/>
  <property name="lib.jar" value="TestClass.jar"/>

  <!-- Checkstyle 設定 -->
  <property name="checkstyle.config" value="checkstyle.xml"/>
  <taskdef resource="checkstyletask.properties" classpath="${lib.dir}/checkstyle-all-3.1.jar"/>

  <!-- 輸出目錄 -->
  <property name="doc.dir" value="doc"/>
  <property name="doc.api" value="${doc.dir}/api"/>
  <property name="javadoc.package" value="com.*"/>

  <property name="dist.root" value="dist"/>
  <property name="dist.proj" value="${dist.root}/proj"/>
  <property name="dist.classes" value="${dist.proj}/classes"/>
  <property name="dist.lib" value="${dist.proj}/lib"/>
  <property name="dist.junit" value="${dist.root}/junit"/>

  <!-- Classpath 定義 -->
  <path id="classpath">
    <fileset dir="${lib.dir}"><include name="**/*.jar"/></fileset>
  </path>
  <path id="proj.libs">
    <fileset dir="${dist.lib}"><include name="**/*.jar"/></fileset>
  </path>

  <target name="init">
    <mkdir dir="${doc.dir}"/>
    <mkdir dir="${dist.root}"/>
    <mkdir dir="${dist.proj}"/>
    <mkdir dir="${dist.lib}"/>
    <tstamp/>
    <echo message="${TSTAMP}"/>
  </target>

  <target name="all" depends="compilesrc, javadoc, checkstyle"/>

  <!-- 編譯主程式碼 -->
  <target name="compilesrc" depends="init">
    <mkdir dir="${dist.classes}"/>
    <javac destdir="${dist.classes}" deprecation="on">
      <src path="${src.code}"/>
      <classpath refid="classpath"/>
    </javac>
    <jar jarfile="${dist.lib}/${lib.jar}" basedir="${dist.classes}">
      <include name="**/*.class"/>
    </jar>
  </target>

  <!-- 生成 Javadoc -->
  <target name="javadoc" depends="init">
    <mkdir dir="${doc.api}"/>
    <javadoc packagenames="${javadoc.package}" sourcepath="${src.code}"
      private="yes" defaultexcludes="yes" destdir="${doc.dir}/api">
      <classpath refid="classpath"/>
    </javadoc>
  </target>

  <!-- 編譯測試碼 -->
  <target name="compilejunit" depends="compilesrc">
    <mkdir dir="${dist.junit}"/>
    <javac destdir="${dist.junit}" deprecation="on">
      <src path="${src.junit}"/>
      <classpath refid="classpath"/>
      <classpath refid="proj.libs"/>
    </javac>
  </target>

  <!-- Checkstyle 檢查 -->
  <target name="checkstyle" depends="init">
    <checkstyle config="${checkstyle.config}">
      <fileset dir="${src.code}" includes="**/*.java"/>
      <formatter type="plain"/>
      <formatter type="xml" toFile="${dist.root}/checkstyle_errors.xml"/>
    </checkstyle>
  </target>

  <!-- 執行 JUnit 測試 -->
  <target name="junit" depends="compilejunit">
    <junit printsummary="yes" haltonfailure="yes">
      <classpath>
        <path refid="classpath"/>
        <pathelement location="${dist.junit}"/>
      </classpath>
      <formatter type="plain"/>
      <batchtest todir="${dist.junit}">
        <fileset dir="${dist.junit}" includes="**/Test*.class"/>
      </batchtest>
    </junit>
  </target>

  <!-- 清理編譯產物 -->
  <target name="clean">
    <delete dir="${dist.classes}"/>
    <delete dir="${dist.junit}"/>
    <delete dir="${doc.api}"/>
  </target>

  <!-- 清理所有輸出 -->
  <target name="cleanall" depends="clean">
    <delete dir="${doc.dir}"/>
    <delete dir="${dist.root}"/>
  </target>
</project>

關鍵 Target 說明

Target功能依賴
init建立輸出目錄、時間戳-
compilesrc編譯主程式碼、打包 JARinit
javadoc生成 API 文檔init
compilejunit編譯測試碼(含主程式 JAR)compilesrc
checkstyle程式碼風格檢查(輸出 plain + XML)init
junit批次執行測試(Test*.class),失敗即停止compilejunit
all預設目標:編譯+文檔+檢查compilesrc, javadoc, checkstyle
clean / cleanall刪除中間/所有產出物-

使用說明

  1. 將 checkstyle-all-3.1.jar 放入 lib/,checkstyle.xml 放專案根目錄。
  2. 主程式碼置 src/,測試碼置 junit/(命名慣例 Test*.java)。
  3. 命令列執行:ant(預設 all)、ant junit、ant cleanall。
  4. JUnit 測試報告輸出至 dist/junit/,Checkstyle 報告至 dist/checkstyle_errors.xml。

擴展建議

  • 加入 cobertura 程式碼覆蓋率報告(參考文章 129864)。
  • 整合 findbugs 或 pmd 靜態分析。
  • 配置 junitreport 生成 HTML 測試報告。
  • 使用 property file 外部化環境差異路徑。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved