使用している環境は以下の通りです。
それぞれ、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の簡単なサンプルです。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0"?> | |
<project name="SimpleAnt" default="compile"> | |
<target name="compile"> | |
<echo>compileだけど表示するだけで何もしない</echo> | |
</target> | |
<target name="test" depends="compile"> | |
<echo>testだけど表示するだけで何もしない</echo> | |
</target> | |
</project> |
これは「SimpleAnt」という名前のプロジェクトのためのbuild.xmlで、「compile」「test」という2つのターゲットを持っています。
「compile」と「test」のそれぞれのターゲットでは、「echo」というタスクを実行するように指定しています。
このタスクは文字列を表示するだけの単純なタスクです。
2行目でデフォルトを「compile」に指定しているため、ターゲットを指定せずにAntを実行した場合、自動的に「compile」ターゲットのタスクを実行します。
実行するときは、build.xmlがあるフォルダでantコマンドを実行します。
C:\Users\siguremon>antまた、「test」ターゲットでは6行目で依存関係に「compile」を指定しています。
Buildfile: C:\Users\siguremon\build.xml
compile: [echo] compileだけど表示するだけで何もしない
BUILD SUCCESSFULTotal time: 0 seconds
そのため、Antで「test」を指定して実行すると、以下のように「test」のタスクの前に「compile」のタスクが実行されます。
C:\Users\siguremon>ant test・JUnitを使うためのbuild.xmlの記述
Buildfile: C:\Users\siguremon\build.xml
compile: [echo] compileだけど表示するだけで何もしない
test: [echo] testだけど表示するだけで何もしない
BUILD SUCCESSFULTotal time: 0 seconds
AntからJUnitを使うためには、3つのポイントがあります。
- junitタスクを使ってテストを実行する (単一のテストクラスを指定)
- junitタスクを使ってテストを実行する (複数のテストクラスを指定)
- junitreportタスクを使ってテストの実行結果を整形する
単一のテストクラスを指定する場合には、以下のように<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タスク