この記事では、ビルドツールアリとユニットテストフレームワークのJUnitのについて説明します. Both of these have become an integral part of java development. Both ant and Junit are widely used in the java world. ほとんどのお客様は、システムのテストと機能テスト用のコードを露光する前に、ユニットテストのログを見てみたいです.
はじめに:
ApacheのANTは、一般的なビルドツールです. 名前 ANT 'の省略形スタンドANotherの N食べる T「効果的な. このツールは、 'に似ています「作ります における有用性 UNIX しかし、Javaを使用して実装されています. これは主にJavaベースのソースコードのバイナリを構築し、事前に定義されているアプリケーションサーバに生成されたバイナリを展開するために使用されています. また、コードベースのJavadocを生成し、全体のコードベースのためのユニットテストスイートを実行するために使用することができ. JUNITと共同でAntは、テスト駆動型開発アプローチに従うことを、開発者を支援.
Antが環境変数を持つインストールされているJavaコンパイラが必要です JAVA_HOME その適切な値に設定します. Antが使用しています XML ビルド手順を定義するためのファイル. このファイルのデフォルト名です build.xmlの. 一部の開発者は、プロパティ、すなわちファイルを使用します build.properties いくつかのプロパティを定義するe.g. 必要性に基づいて随時変更するために必要なビルドバージョン番号およびその他の環境パラメータ.
インスタレーション: このセクションでは、異なるオペレーティングシステム上でのANTのインストールについて説明します.
FEDORA - RHELで, ANTは、コマンドを使用してインストールすることができます - yumのRPMを使用してアリインストールするか、それをインストールすることができます - 私は、コマンド. この場合は、まずアリのパッケージをダウンロードしてください.
DEBIAN - Ubuntuで, ANTは、コマンドを使用してインストールすることができます - apt-getのアリをインストール.
Windowsの – Windows環境で、私たちはant_をダウンロードする必要があります<VERSION_NO>.zipファイル. このZIPバンドルはフォルダに抽出する必要があります. このフォルダには、環境変数として定義する必要がありますANT_HOME.
サンプルbuild.xmlファイルは下のように示されています:
LISTING 1: サンプルbuild.xmlファイル
[Code]
<?XMLバージョン=”1.0″?>
<プロジェクト名=”Antのテスト” デフォルト=”メイン” BASEDIR =”.”>
<!– 後で使用できる変数を設定します。. –>
<!– プロパティの値を介してアクセスされます ${} –>
<プロパティ名=”src.dir” 場所=”SRC” />
<プロパティ名=”build.dir” 場所=”bin” />
<プロパティ名=”dist.dir” 場所=”DIST” />
<プロパティ名=”docs.dir” 場所=”ドキュメント” />
<!– 既存のドキュメントを削除します。, 構築し、distディレクトリ–>
<ターゲット名=”クリーン”>
<= DIRを削除”${build.dir}” />
<= DIRを削除”${docs.dir}” />
<= DIRを削除”${dist.dir}” />
</ターゲット>
<!– ドキュメントを作成します。, 構築し、distディレクトリ–>
<ターゲット名=”MAKEDIR”>
<MKDIR DIR =”${build.dir}” />
<MKDIR DIR =”${docs.dir}” />
<MKDIR DIR =”${dist.dir}” />
</ターゲット>
<!– Javaコードをコンパイルします (JUnitのためのライブラリの使用を含みます –>
<ターゲット名=”compile” =依存”クリーン, MAKEDIR”>
<javac SRCDIR =”${src.dir}” DESTDIR =”${build.dir}”>
</javacの>
</ターゲット>
<!– Javadocを作成します。 –>
<ターゲット名=”ドキュメント” =依存”compile”>
<Javadocのパッケージ名=”SRC” ソースパス=”${src.dir}” DESTDIR =”${docs.dir}”>
<!– どのファイルを定義します。 / ディレクトリが含まれるはずです, 我々はすべて含まれ –>
<ファイルセットDIR =”${src.dir}”>
<=名を含めます”**” />
</ファイルセット>
</Javadocの>
</ターゲット>
<!–展開可能なjarファイルを作成します。 –>
<ターゲット名=”jar” =依存”compile”>
<ジャーのdestFile =”${dist.dir}\in.kolkalta.build.test.ant.jar” BASEDIR =”${build.dir}”>
<マニフェスト>
<属性名=”主なクラス” 値=”test.Main” />
</マニフェスト>
</jar>
</ターゲット>
<ターゲット名=”メイン” =依存”compile, jar, ドキュメント”>
<説明>主要目標</説明>
</ターゲット>
</プロジェクト>
[/Code]
JUnitを使用ANT:
Antはテスト駆動開発手法を使用するJava開発者に大きな助けを提供. 私たちは、テスト駆動開発の方法論JUNITに知っているように強制され, 我々は一度にすべてのJUnitテストケースを実行する自動化スクリプトを使用している場合、それは常に追加された利点であります. だけでなく、我々はハドソンのような継続的な統合ツールを持っている場合は、このスクリプトを使用することもできることを. 私たちの次のサンプルコードは、JUnitを使用し、ANTを使用する方法を示し.
LISTING 2: サンプルのJavaファイル
[Code]
package com.home.junit;
公共 クラス SampleAdd {
公共 int型 加える(int型 X, int型 と) {
リターン X + と;
}
}
[/Code]
LISTING 3: 対応JUNITファイル
[Code]
パッケージcom.home.junit;
輸入org.junit.After;
輸入org.junit.Assert;
輸入org.junit.Before;
輸入org.junit.Test;
パブリッククラスSampleAddTest {
プライベートSampleAdd sampleClass;
@前
公共ボイドのsetUp() {
sampleClass =新しいSampleAdd();
}
@テスト
公共ボイドtestAdd() {
Assert.assertEquals(5, sampleClass.add(3, 2));
}
@After
公共ボイドsettleDown() {
sampleClass = NULL;
}
}
[/Code]
LISTING 4: JUnitテストをコンパイルして実行するためのAntスクリプト
[Code]
<?XMLバージョン=”1.0″?>
<プロジェクト名=”JUNIT” デフォルト=”メイン” BASEDIR =”..”>
<!– 後で使用できる変数を設定します。. –>
<!– プロパティの値を介してアクセスされます ${} –>
<プロパティ名=”src.dir” 場所=”SRC” />
<プロパティ名=”test.dir” 場所=”テスト” />
<プロパティ名=”build.dir” 場所=”bin” />
<プロパティ名=”build.test.dir” 場所=”ビン/テスト” />
<!– JUnitのTESTINのために使用される変数 –>
<プロパティ名=”test.report.dir” 場所=”カスタマイズポート” />
<!– junit.jarをとコンパイル後のクラスが含まれてクラスパスを定義します。–>
<パスID =”junit.class.path”>
<pathelement場所=”LIB / JUnitの-4.11.jar” />
<pathelement場所=”LIB / hamcrestコア-1.3.jar” />
<pathelement場所=”${build.dir}” />
</パス>
<!– 既存のビルドを削除します。, ドキュメントとdistディレクトリ–>
<ターゲット名=”クリーン”>
<= DIRを削除”${build.dir}” />
<= DIRを削除”${test.report.dir}” />
</ターゲット>
<!– ビルドを作成します。, ドキュメントとdistディレクトリ–>
<ターゲット名=”MAKEDIR”>
<MKDIR DIR =”${build.dir}” />
<MKDIR DIR =”${build.test.dir}” />
<MKDIR DIR =”${test.report.dir}” />
</ターゲット>
<!– Javaコードをコンパイルします (JUnitのためのライブラリの使用を含みます –>
<ターゲット名=”compile” =依存”クリーン, MAKEDIR”>
<javac SRCDIR =”${src.dir}” DESTDIR =”${build.dir}”>
<クラスパスREFID =”junit.class.path” />
</javacの>
<javac SRCDIR =”${test.dir}” DESTDIR =”${build.test.dir}”>
<クラスパスREFID =”junit.class.path” />
</javacの>
</ターゲット>
<!– JUnitテストを実行します。 –>
<!– 出力はXMLです, また、無地かもしれません–>
<ターゲット名=”JUnitの” =依存”compile”>
<JUnitのprintsummary =”on” フォーク=”真” haltonfailure =”はい”>
<クラスパスREFID =”junit.class.path” />
<クラスパス>
<pathelement場所=”${build.test.dir}”/>
</クラスパス>
<フォーマッタタイプ=”XML” />
<batchtest todirの=”${test.report.dir}”>
<ファイルセットDIR =”${test.dir}”>
<=名を含めます”**/*テスト*の.javaファイル” />
</ファイルセット>
</batchtest>
</JUnitの>
</ターゲット>
<ターゲット名=”メイン” =依存”compile, JUnitの”>
<説明>主要目標</説明>
</ターゲット>
</プロジェクト>
[/Code]
私たちは、このスクリプトを実行すると、, それは、最初のコードベースをコンパイルして、コンパイルされたコードにJUnitテストを実行し、最終的にテストレポートを生成し、. 試験報告書は、任意の形式で生成することができます. 利便性のために我々は、XML形式でこれを生成しました.
LISTING 5: XML形式で生成されたテストレポート
[Code]
<?XMLバージョン=”1.0″ エンコーディング=”UTF-8″?>
-<テストスイートのタイムスタンプ=”2013-10-26T18:52:45″ 時間=”0.077″ テストの=”1″ 名前=”com.home.junit.SampleAddTest” ホスト名=”INDTAPPL132-001″ 障害=”0″ エラー=”0″>-<properties><プロパティ名=”java.vendor” 値=”オラクル・コーポレーション”/><プロパティ名=”sun.java.launcher” 値=”SUN_STANDARD”/><プロパティ名=”eclipse.pdebuild.templates” 値=”/F:/Utpal/Softs/Softs/eclipse-java-indigo-win32/eclipse/plugins/org.eclipse.pde.build_3.7.0.v20110512-1320/templates/”/><プロパティ名=”sun.management.compiler” 値=”HotSpotのクライアントコンパイラ”/><プロパティ名=”os.name” 値=”Windows 7の″/><プロパティ名=”sun.boot.class.path” 値=”C言語:\プログラムファイルのJava jre7 libに resources.jar;C言語:\プログラムファイルのJava jre7 libに rt.jarの;C言語:\プログラムファイルのJava jre7 libに sunrsasign.jar;C言語:\プログラムファイルのJava jre7 libにのjsse.jar;C言語:\プログラムファイルのJava jre7 libに jce.jar;C言語:\プログラムファイルのJava jre7 libに charsets.jar;C言語:\プログラムファイルのJava jre7 libに jfr.jar;C言語:\プログラムファイルのJava jre7 クラス”/><プロパティ名=”sun.desktop” 値=”窓”/><プロパティ名=”java.vm.specification.vendor” 値=”オラクル・コーポレーション”/><プロパティ名=”ant.home” 値=”F:\UtpalSoftsSoftseclipse-java-indigo-win32eclipsepluginsorg.apache.ant_1.8.2.v20110505-1300″/><プロパティ名=”java.runtime.version” 値=”1.7.0_45-b18″/><プロパティ名=”user.name” 値=”utpalb”/><プロパティ名=”build.dir” 値=”F:\WorkRnDSpaceJunitbin”/><プロパティ名=”user.language” 値=”en”/><プロパティ名=”test.report.dir” 値=”F:\WorkRnDSpaceJunittestreport”/><プロパティ名=”sun.boot.library.path” 値=”C言語:\Program FilesJavajre7bin”/><プロパティ名=”ant.project.default-target” 値=”メイン”/><プロパティ名=”ant.project.name” 値=”JUNIT”/><プロパティ名=”java.version” 値=”1.7.0_45″/><プロパティ名=”user.timezone” 値=””/><プロパティ名=”sun.arch.data.model” 値=”32″/><プロパティ名=”java.endorsed.dirs” 値=”C言語:\Program FilesJavajre7libendorsed”/><プロパティ名=”sun.cpu.isalist” 値=”pentium_pro mmx pentium_pro pentium mmx pentium i486 i386 i86″/><プロパティ名=”sun.jnu.encoding” 値=”Cp1252″/><プロパティ名=”file.encoding.pkg” 値=”sun.io”/><プロパティ名=”file.separator” 値=”\”/><プロパティ名=”java.specification.name” 値=”Java Platform API Specification”/><プロパティ名=”java.class.version” 値=”51.0″/><プロパティ名=”user.country” 値=”US”/><プロパティ名=”java.home” 値=”C言語:\Program FilesJavajre7″/><プロパティ名=”java.vm.info” 値=”mixed mode, sharing”/><プロパティ名=”ant.file” 値=”F:\WorkRnDSpaceJunitbuildbuild.xml”/><プロパティ名=”os.version” 値=”6.1″/><プロパティ名=”path.separator” 値=”;”/><プロパティ名=”java.vm.version” 値=”24.45-b08″/><プロパティ名=”user.variant” 値=””/><プロパティ名=”ant.library.dir” 値=”F:\UtpalSoftsSoftseclipse-java-indigo-win32eclipsepluginsorg.apache.ant_1.8.2.v20110505-1300lib”/><プロパティ名=”java.awt.printerjob” 値=”sun.awt.windows.WPrinterJob”/><プロパティ名=”sun.io.unicode.encoding” 値=”UnicodeLittle”/><プロパティ名=”ant.file.type.JUNIT” 値=”ファイル”/><プロパティ名=”awt.toolkit” 値=”sun.awt.windows.WToolkit”/><プロパティ名=”user.script” 値=””/><プロパティ名=”ant.file.JUNIT” 値=”F:\WorkRnDSpaceJunitbuildbuild.xml”/><プロパティ名=”eclipse.pdebuild.scripts” 値=”/F:/Utpal/Softs/Softs/eclipse-java-indigo-win32/eclipse/plugins/org.eclipse.pde.build_3.7.0.v20110512-1320/scripts/”/><プロパティ名=”user.home” 値=”C言語:\Usersutpalb”/><プロパティ名=”java.specification.vendor” 値=”オラクル・コーポレーション”/><プロパティ名=”test.dir” 値=”F:\WorkRnDSpaceJunittests”/><プロパティ名=”java.library.path” 値=”C言語:\Program FilesJavajre7bin;C言語:\WindowsSunJavabin;C言語:\Windowssystem32;C言語:\Windowsの;C言語:/Program Files/Java/jre7/bin/client;C言語:/Program Files/Java/jre7/bin;C言語:/Program Files/Java/jre7/lib/i386;C言語:\Windowssystem32;C言語:\Windowsの;C言語:\WindowsSystem32Wbem;C言語:\WindowsSystem32WindowsPowerShellv1.0;C言語:\Program FilesJavajdk1.6.0_10bin;それ:\apache-ant-1.8.2-binapache-ant-1.8.2bin;C言語:\Program FilesLiquid TechnologiesLiquid XML Studio 2011XmlDataBinder9Redist9cppwin32bin;C言語:\Program FilesTortoiseSVNbin;それ:\Program FilesAndroidandroid-sdkplatform-tools;それ:\Program FilesAndroidandroid-sdktools;C言語:\Program FilesQuickTimeQTSystem;D:\SunAppServerbin;9;F:\UtpalSoftsSoftseclipse-java-indigo-win32eclipse;;.”/><プロパティ名=”java.vendor.url” 値=”HTTP://java.oracle.com/”/><プロパティ名=”java.vm.vendor” 値=”オラクル・コーポレーション”/><プロパティ名=”java.runtime.name” 値=”ジャワ(TM) SE Runtime Environment”/><プロパティ名=”sun.java.command” 値=”org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner com.home.junit.SampleAddTest filtertrace=true haltOnError=false haltOnFailure=true formatter=org.apache.tools.ant.taskdefs.optional.junit.SummaryJUnitResultFormatter showoutput=false outputtoformatters=true logfailedtests=true logtestlistenerevents=false formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,F:\WorkRnDSpaceJunittestreportTEST-com.home.junit.SampleAddTest.xml crashfile=F:\WorkRnDSpaceJunitjunitvmwatcher6288340937110531134.properties propsfile=F:\WorkRnDSpaceJunitjunit7583515827572177542.properties”/><プロパティ名=”java.class.path” 値=”F:\WorkRnDSpaceJunitlibjunit-4.11.jar;F:\WorkRnDSpaceJunitlibhamcrest-core-1.3.jar;F:\WorkRnDSpaceJunitbin;F:\WorkRnDSpaceJunitbintests;F:\WorkRnDSpaceJunit;C言語:\Program FilesJavajdk1.6.0_10jrelibrt.jar;F:\UtpalSoftsSoftseclipse-java-indigo-win32eclipsepluginsorg.apache.ant_1.8.2.v20110505-1300libant-launcher.jar;F:\UtpalSoftsSoftseclipse-java-indigo-win32eclipsepluginsorg.apache.ant_1.8.2.v20110505-1300libant.jar;F:\UtpalSoftsSoftseclipse-java-indigo-win32eclipsepluginsorg.apache.ant_1.8.2.v20110505-1300libant-junit.jar;F:\UtpalSoftsSoftseclipse-java-indigo-win32eclipsepluginsorg.apache.ant_1.8.2.v20110505-1300libant-junit4.jar”/><プロパティ名=”ant.version” 値=”Apache Ant(TM) version 1.8.2 compiled on December 20 2010″/><プロパティ名=”java.vm.specification.name” 値=”Java Virtual Machine Specification”/><プロパティ名=”java.vm.specification.version” 値=”1.7″/><プロパティ名=”sun.cpu.endian” 値=”little”/><プロパティ名=”sun.os.patch.level” 値=”Service Pack 1″/><プロパティ名=”eclipse.pdebuild.home” 値=”/F:/Utpal/Softs/Softs/eclipse-java-indigo-win32/eclipse/plugins/org.eclipse.pde.build_3.7.0.v20110512-1320/./”/><プロパティ名=”java.io.tmpdir” 値=”C言語:\UsersutpalbAppDataLocalTemp”/><プロパティ名=”java.vendor.url.bug” 値=”HTTP://bugreport.sun.com/bugreport/”/><プロパティ名=”os.arch” 値=”x86″/><プロパティ名=”java.awt.graphicsenv” 値=”sun.awt.Win32GraphicsEnvironment”/><プロパティ名=”java.ext.dirs” 値=”C言語:\Program FilesJavajre7libext;C言語:\WindowsSunJavalibext”/><プロパティ名=”user.dir” 値=”F:\WorkRnDSpaceJunitbuild”/><プロパティ名=”build.test.dir” 値=”F:\WorkRnDSpaceJunitbintests”/><プロパティ名=”line.separator” 値=” “/><プロパティ名=”java.vm.name” 値=”Java HotSpot(TM) Client VM”/><プロパティ名=”basedir” 値=”F:\WorkRnDSpaceJunit”/><プロパティ名=”ant.java.version” 値=”1.7″/><プロパティ名=”ant.core.lib” 値=”F:\UtpalSoftsSoftseclipse-java-indigo-win32eclipsepluginsorg.apache.ant_1.8.2.v20110505-1300libant.jar”/><プロパティ名=”file.encoding” 値=”Cp1252″/><プロパティ名=”java.specification.version” 値=”1.7″/><プロパティ名=”src.dir” 値=”F:\WorkRnDSpaceJunitsrc”/><プロパティ名=”ant.project.invoked-targets” 値=”メイン”/></properties><testcase time=”0.003″ 名前=”testAdd” classname=”com.home.junit.SampleAddTest”/>-<system-out>
<![CDATA[]]>
</system-out>-<system-err>
<![CDATA[]]>
</system-err></testsuite>
[/Code]
結論: So after discussing all the above theory and implementation details we can conclude with the following highlights.
- APACHE ANT is a java based utility used by the Java developers for the following purpose
- To generate the binaries from the source code
- To generate javadocs for the source code
- To run JUNIT test cases on a code base
- ANT in collaboration with JUNIT, helps the java developers to follow the Test Driven Development methodology
Hope you have enjoyed the article and got a clear understanding about the tool and its implementation. If you have any query, send me a mail and I would love to answer your queries.