AntとTestNGタスクの例
このチュートリアルでは、AntビルドでTestNGテストを実行する方法を説明します。
1.クラスで実行する
build.xml
<taskdef name="testng" classname="org.testng.TestNGAntTask"> <classpath location="lib/testng-6.8.14.jar"/> </taskdef> <target name="testng" depends="compile"> <!-- Assume test.path contains the project library dependencies --> <testng classpathref="test.path" outputDir="${report.dir}" haltOnFailure="true"> <!-- Extra project classpath, which is not included in above "test.path" --> <!-- Tell Ant where is the project and test classes --> <classpath location="${test.classes.dir}"/> <classpath location="${src.classes.dir}"/> <!-- Tell Ant what test classes need to run --> <classfileset dir="${test.classes.dir}" includes="** ** /** Test** .class"/> </testng> </target>
2. XMLで実行する
$ \ {resources.dir}/testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="TestAll"> <test name="anyname"> <classes> <class name="com.mkyong.test.TestMessage"/> </classes> </test> </suite>
build.xml
<taskdef name="testng" classname="org.testng.TestNGAntTask"> <classpath location="lib/testng-6.8.14.jar"/> </taskdef> <target name="testng" depends="compile"> <testng classpathref="test.path" outputDir="${report.dir}" haltOnFailure="true"> <classpath location="${test.classes.dir}"/> <!-- Tell Ant where is testng.xml --> <xmlfileset dir="${resources.dir}" includes="testng.xml"/> </testng> </target>
3.例
一連のTestNGテストの実行方法を示すWebアプリケーションの例。
3.1メッセージを返す
MessageGenerator.java
package com.mkyong.message; import org.springframework.stereotype.Component; @Component public class MessageGenerator { public String getWelcomeMessage() { return "welcome"; } }
3.2 2つのTestNGテスト。
TestMessage.java
package com.mkyong.test; import org.testng.Assert; import org.testng.annotations.Test; import com.mkyong.message.MessageGenerator; public class TestMessage { @Test public void test__welcome__message() { MessageGenerator obj = new MessageGenerator(); Assert.assertEquals(obj.getWelcomeMessage(), "welcome"); } }
TestMessage2.java
package com.mkyong.test; import org.testng.Assert; import org.testng.annotations.Test; import com.mkyong.message.MessageGenerator; public class TestMessage2 { @Test public void test__welcome__message__2() { MessageGenerator obj = new MessageGenerator(); Assert.assertEquals(obj.getWelcomeMessage(), "welcome"); } }
3.3 ivyを使用してプロジェクトの依存関係を取得し、プロジェクトのスコープを宣言します。
ivy.xml
<ivy-module version="2.0"> <info organisation="org.apache" module="WebProject"/> <configurations> <conf name="compile" description="Required to compile application"/> <conf name="runtime" description="Additional run-time dependencies" extends="compile"/> <conf name="test" description="Required for test only" extends="runtime"/> </configurations> <dependencies> <dependency org="org.testng" name="testng" rev="6.8.14" conf="test->default"/> </dependencies> </ivy-module>
3.4ランユニットテスト
build.xml
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="HelloProject" default="main" basedir="."> <description> Running TestNG Test </description> <!-- Project Structure --> <property name="jdk.version" value="1.7"/> <property name="projectName" value="WebProject"/> <property name="src.dir" location="src"/> <property name="test.dir" location="src"/> <property name="report.dir" location="report"/> <property name="web.dir" value="war"/> <property name="web.classes.dir" location="${web.dir}/WEB-INF/classes"/> <!-- ivy start --> <target name="resolve" description="retrieve dependencies with ivy"> <echo message="Getting dependencies..."/> <ivy:retrieve/> <ivy:cachepath pathid="compile.path" conf="compile"/> <ivy:cachepath pathid="runtime.path" conf="runtime"/> <ivy:cachepath pathid="test.path" conf="test"/> </target> <!-- Compile Java source from ${src.dir} and output it to ${web.classes.dir} --> <target name="compile" depends="init, resolve" description="compile source code"> <mkdir dir="${web.classes.dir}"/> <javac destdir="${web.classes.dir}" source="${jdk.version}" target="${jdk.version}" debug="true" includeantruntime="false" classpathref="compile.path"> <src path="${src.dir}"/> </javac> </target> <!-- Run TestNG --> <target name="testng" depends="compile"> <testng classpathref="test.path" outputDir="${report.dir}" haltOnFailure="true"> <classpath location="${web.classes.dir}"/> <xmlfileset dir="${resources.dir}" includes="testng.xml"/> <!-- <classfileset dir="${web.classes.dir}" includes="** ** /** Test** .class"/> --> </testng> </target> <!-- Create folders --> <target name="init"> <mkdir dir="${src.dir}"/> <mkdir dir="${web.classes.dir}"/> <mkdir dir="${report.dir}"/> </target> <!-- Delete folders --> <target name="clean" description="clean up"> <delete dir="${web.classes.dir}"/> <delete dir="${report.dir}"/> </target> <target name="main" depends="testng"/> </project>
$ \ {resources.dir}/testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="TestAll"> <test name="example1"> <classes> <class name="com.mkyong.test.TestMessage"/> <class name="com.mkyong.test.TestMessage2"/> </classes> </test> </suite>
それを実行します
$ ant testng
出力
testng: [testng][TestNG]Running: [testng] /Users/mkyong/Documents/workspace/AntSpringMVC/resources/testng.xml [testng] [testng] [testng]=============================================== [testng]TestAll [testng]Total tests run: 2, Failures: 0, Skips: 0 [testng]=============================================== [testng] BUILD SUCCESSFUL Total time: 3 seconds
完了しました。
ソースコードをダウンロードする
ダウンロード – リンク://wp-content/uploads/2015/01/AntSpringMVC-TestNG-Example.zip[AntSpringMVC-TestNG-Example](90 KB)