Menu

FrontPage

Eclipseプラグイン
Eclipse小技集
リファクタリング講座
テスティングフレームワーク JUnit
MSDEについて



The 20 newest affair
2010-09-092010-09-082010-09-072010-09-062010-09-012010-08-312010-08-272010-08-242010-08-232010-08-172010-08-162010-07-302010-07-212010-07-132010-06-272010-06-182010-06-172010-06-16

antでdjUnitを使う


djUnitをantで使用する方法です。
基本的にはJCoverageをantで使用する方法とほぼ同じです。(ant編へ)
ただ、build.xmlに少し修正が必要です。

  • djunitのtaskdefを記述する。
  • djunitが使用しているjar(javassist.jarなど、djUnitプラグインフォルダ内のlibフォルダにある)に対してクラスパスを通す。
  • djunit-instrumentタグを指定して、加工対象のクラスを記述する。
  • 加工対象のクラスのクラスパスをdjunit-instrumentタグ内で指定する。

djunit-instrumentタグ  Λ


djunit-instrumentタグは、JCoverageのinstrumentタグの代替となるタグです。
従来のJCoverageの「instrument」を「djunit-instrument」に置き換えて使用できます。

ただし、djunit-instrumentでは、VirtualMockObjectsに対応するため、独自の属性が追加されています。

属性名設定可能な値デフォルト値
coverageyes/on/true, no/off/falseyes
virtualmockyes/on/true, no/off/falseno

これらの属性を設定することで、VirtualMockObjectsを利用可能です。

[注意]
djunit-instrumentは、処理速度に問題があります。現在調査中ですが、今後の課題とします。

以下はdjUnitを使用する場合のbuild.xmlの例です。
修正する場合に参考にしてください。

<?xml version="1.0" encoding="Windows-31J"?>

<project name="djwiki_test" basedir="." default="report">


	<!-- ========== PROPERTIES ========== -->

<!--	<property file="build.properties" /> -->

	<!-- Source Directory -->
	<property name="djunit.src.dir" value="D:\eclipse\workspace\Wiki\src" />
	<property name="djunit.test.src.dir" value="D:\eclipse_2.1.2\workspace\dJWiki Test\src" />

	<!-- Build Directory -->
	<property name="djunit.build.dir" value="D:\eclipse\workspace\Wiki\WEB-INF\classes" />
	<property name="djunit.test.build.dir" value="D:\eclipse_2.1.2\workspace\dJWiki Test\classes" />

	<!-- JUnit Report Directory -->
	<property name="junit.report.dir" value="D:\eclipse_2.1.2\workspace\dJWiki Test\junitreport" />
	<property name="junit.work.dir" value="D:\eclipse_2.1.2\workspace\dJWiki Test\junitwork" />

	<!-- JCoverage Directory -->
	<property name="jcoverage.work.dir" value="D:\eclipse_2.1.2\workspace\dJWiki Test\jcoveragework" />
	<property name="jcoverage.work.classes" value="${jcoverage.work.dir}\classes" />
	<property name="jcoverage.work.src" value="${jcoverage.work.dir}\src" />
	<property name="jcoverage.report.dir" value="D:\eclipse_2.1.2\workspace\dJWiki Test\jcoveragereport" />

	<!-- JCoverage Task Def -->
	<taskdef classpath="D:\com.jcoverage_1.0.5\jcoverage.jar" resource="tasks.properties" />

<!--
	***********************************************************************************************
		djUnit TaskDefを記述する。
		"classpath"はdjunit.jarへのパス、"resource"はdjunittasks.propertiesを指定。
	***********************************************************************************************
 -->
	<!-- djUnit Task Def -->
	<taskdef classpath="D:\eclipse_2.1.2\plugins\jp.co.dgic.eclipse.jdt.djunit_0.3.1\djunit.jar" resource="djunittasks.properties" />

	<!-- ========== CLASSPATH ========== -->

	<path id="project.class.path">

		<fileset dir="D:\eclipse\workspace\Wiki\WEB-INF\lib">
			<include name="**/*.jar" />
		</fileset>

		<path path="${djunit.build.dir}" />

	</path>

	<path id="test.project.class.path">

		<path path="${djunit.build.dir}" />
		<path path="D:\eclipse_2.1.2\plugins\jp.co.dgic.eclipse.jdt.djunit_0.3.1\djunit.jar" />


<!-- 
	***********************************************************************************************
		djUnitプラグインのフォルダの「lib」内にあるjarファイルにパスを通す。
		具体的には「javassist.jar」が必要なため。
	***********************************************************************************************
-->
		<fileset dir="D:\eclipse_2.1.2\plugins\jp.co.dgic.eclipse.jdt.djunit_0.3.1\lib">
			<include name="**/*.jar" />
		</fileset>

	</path>


	<!-- ========== CLEAN ========== -->

	<target name="clean.jcoverage.report">

		<delete dir="${jcoverage.work.classes}" />
		<mkdir dir="${jcoverage.work.classes}" />

		<delete dir="${jcoverage.work.src}" />
		<mkdir dir="${jcoverage.work.src}" />

		<delete>
			<fileset dir="." includes="**/jcoverage.ser" />
		</delete>

	</target>


	<!-- ========== TEST ========== -->

	<target name="run.test" depends="prepare.jcoverage">

		<delete dir="${junit.work.dir}" />
		<mkdir dir="${junit.work.dir}" />

		<delete dir="${junit.report.dir}" />
		<mkdir dir="${junit.report.dir}" />

		<junit printsummary="yes" fork="yes" dir="D:\eclipse_2.1.2\workspace\dJWiki Test">

			<classpath location="D:\com.jcoverage_1.0.5\jcoverage-main.jar" />
			<classpath location="${jcoverage.work.classes}" />
			<classpath refid="project.class.path" />
			<classpath refid="test.project.class.path" />
			<classpath location="${djunit.test.build.dir}" />

			<formatter type="xml" />

			<batchtest todir="${junit.work.dir}">

				<fileset dir="${djunit.test.build.dir}">
					<include name="**/*.class" />
				</fileset>

			</batchtest>

		</junit>

		<junitreport>

			<fileset dir="${junit.work.dir}">
				<include name="TEST-*.xml" />
			</fileset>

			<report format="frames" todir="${junit.report.dir}" />

		</junitreport>

	</target>


	<!-- ========== JCOVERAGE ========== -->

	<target name="prepare.jcoverage" depends="clean.jcoverage.report">

<!--
	***********************************************************************************************
		JCoverageを使用する際の"instrument"の代わりに、djUnitは"djUnit-instrument"を記述する。
		なお、オプションに"virtualmock=yes/no"があり、virtualmockの使用可否を指定出来る
	***********************************************************************************************
-->
		<djunit-instrument todir="${jcoverage.work.classes}" virtualmock="yes">

			<classpath location="D:\com.jcoverage_1.0.5\jcoverage-main.jar" />
			<classpath refid="test.project.class.path" />
			<classpath refid="project.class.path" />

			<fileset dir="${djunit.build.dir}">
				<include name="**/*.class" />
				<exclude name="**/filters/**/*.class"/>
				<exclude name="**/plugin/**/*.class"/>
				<exclude name="**/wiki/tag/**/*.class"/>
				<exclude name="**/wiki/transformer/**/*.class"/>
			</fileset>

		</djunit-instrument>

	</target>

	<target name="report.jcoverage" depends="run.test">

		<merge>

			<classpath location="D:\com.jcoverage_1.0.5\jcoverage-main.jar" />

			<fileset dir=".">
				<include name="**/jcoverage.ser" />
			</fileset>

		</merge>

		<copy todir="${jcoverage.work.src}">

			<fileset dir="${djunit.src.dir}">
				<include name="**/*.java" />
			</fileset>

		</copy>

		<delete dir="${jcoverage.report.dir}" />
		<mkdir dir="${jcoverage.report.dir}" />

		<report srcdir="${jcoverage.work.src}" destdir="${jcoverage.report.dir}">

			<classpath location="D:\com.jcoverage_1.0.5\jcoverage-main.jar" />
			<classpath refid="test.project.class.path" />

		</report>

	</target>

	<target name="report" depends="report.jcoverage">

		<delete dir="${jcoverage.work.dir}" />

		<delete>
			<fileset dir="." includes="**/jcoverage.ser" />
		</delete>

		<delete dir="${junit.work.dir}" />

		<delete>
			<fileset dir="." includes="**/TESTS*.xml" />
			<fileset dir="." includes="**/Test*.log" />
		</delete>

	</target>

</project>


Attached File: [Attached File All List]

Lastmodified: 2006-06-27 (火) 10:50:23 (1535d)