2012年11月2日金曜日

JUnit入門―導入・実行編(Ant ver.)

今回はJUnitをAntから使うための環境について試してみます。

使用している環境は以下の通りです。
それぞれ、JDK・JUnitは導入済みとします。
・Windows 7 SP1
・JDK 1.7.0 (64bit ver.)
・JUnit 4.10
・Antの導入
Antとは、Javaベースのビルドツールの1つで、build.xmlというファイルにxml形式で目的ごとの処理を記述していきます。
導入の方法としては、バイナリを手に入れる方法とソースからビルドする方法があります。
ここでは、バイナリを使用する方法について説明します。
まず、Antのバイナリを以下のページからzipファイルをダウンロードします。
http://ant.apache.org/bindownload.cgi
zipファイルを適当なところに展開しておきます。
次に環境変数を設定します。
設定の必要があるのは、以下の3つです。
JAVA_HOME ・・・JDKがインストールされているフォルダ。
ANT_HOME ・・・Antがインストールされているフォルダ
PATH ・・・Antの実行ファイルがあるフォルダを追加する。ANT_HOME以下のbinに実行ファイルがある
以上で導入は完了です。
コマンドプロンプトを開いて、以下のコマンドを実行したときにバージョン番号等が表示されればOKです。
ant -version
・1分で分かった気になるAnt
Antでは、「ビルドする」・「テストする」などの目的を「ターゲット」、目的を達成するために実行する「フォルダを作成する」・「javacを実行する」などの個々の処理を「タスク」と呼んでいて、ターゲットごとにいくつかのタスクを実行します。
以下がbuild.xmlの簡単なサンプルです。


これは「SimpleAnt」という名前のプロジェクトのためのbuild.xmlで、「compile」「test」という2つのターゲットを持っています。
「compile」と「test」のそれぞれのターゲットでは、「echo」というタスクを実行するように指定しています。
このタスクは文字列を表示するだけの単純なタスクです。
2行目でデフォルトを「compile」に指定しているため、ターゲットを指定せずにAntを実行した場合、自動的に「compile」ターゲットのタスクを実行します。
実行するときは、build.xmlがあるフォルダでantコマンドを実行します。
C:\Users\siguremon>ant
Buildfile: C:\Users\siguremon\build.xml
compile:     [echo] compileだけど表示するだけで何もしない
BUILD SUCCESSFULTotal time: 0 seconds
また、「test」ターゲットでは6行目で依存関係に「compile」を指定しています。
そのため、Antで「test」を指定して実行すると、以下のように「test」のタスクの前に「compile」のタスクが実行されます。
C:\Users\siguremon>ant test
Buildfile: C:\Users\siguremon\build.xml
compile:     [echo] compileだけど表示するだけで何もしない
test:     [echo] testだけど表示するだけで何もしない
BUILD SUCCESSFULTotal time: 0 seconds
・JUnitを使うためのbuild.xmlの記述
AntからJUnitを使うためには、3つのポイントがあります。
  1. junitタスクを使ってテストを実行する (単一のテストクラスを指定)
  2. junitタスクを使ってテストを実行する (複数のテストクラスを指定)
  3. junitreportタスクを使ってテストの実行結果を整形する
1.junitタスクを使ってテストを実行する(単一のテストクラスを指定)
単一のテストクラスを指定する場合には、以下のように<test>プロパティを使います。
この場合、my.test.TestCaseがテストクラスです。

<junit printsummary="yes" fork="yes" haltonfailure="yes">
  <formatter type="plain" />
  <test name="my.test.TestCase" />
</junit>
その他、<formatter>プロパティでjunitの出力形式を指定しています。

2.junitタスクを使ってテストを実行する(複数のテストクラスを指定)

複数のテストクラスを指定する場合には、以下のように<batchtest>プロパティを使います。
<batchtest>プロパティの中では、filesetでテストクラスを指定します。

<junit printsummary="yes" haltonfailure="yes">
  <classpath>
    <pathelement location="${build.tests}" />
    <pathelement path="${java.class.path}" />
  </classpath>

  <formatter type="plain" />

  <batchtest fork="yes" todir="${reports.tests}">
    <fileset dir="${src.tests}">
      <include name="**/*Test*.java" />
      <exclude name="**/AllTests.java" />
    </fileset>
  </batchtest>
</junit>

3.junitreportタスクを使ってテストの実行結果を整形する

junitの実行結果は上でも少し触れましたが、<formatter>プロパティで指定することができます。
デフォルトでは"plain"、"brief”、"xml"の3つを指定することができます。
しかし、junitreportタスクを使うとさらに結果を見やすくすることができます。
このタスクを使うためには、junitの<formatter>プロパティで"xml"を指定する必要があります。
その上で、出力結果ファイルを<fileset>で指定し、<report>で最後に出力します。
<junitreport todir="./reports">
  <fileset dir="./reports">
    <include name="TEST-*.xml"/>
  </fileset>
  <report format="frames" todir="./report/html"/>
</junitreport>
・サンプル
以下にサンプルを置きました。
複数のテストクラスを実行し、junitreportで整形した出力結果を作成しています。
https://github.com/siguremon/AntExample/tree/simpleant
・参考
Ant | TECHSCORE(テックスコア)
JUnit Task
JUnitReportタスク

1 件のコメント:

  1. 今日は。

    ANTはどうことができるか、少し知りたいと思っておりました。

    返信削除