よしだのブログ

サブタイトルはありません。

[java] ant の junit でテストクラスの ClassNotFoundException が出る場合の対処法。

今日は技術ネタ。
#コードを貼ると、デザインが崩れたのでテーマを戻しました。。

junit の実行ログを取るために、ant で実行するように build.xml を書いていたのですが、実行時にテストクラスそのものに対して、ClassNotFoundException が出てましたので、その対処法のメモ。

ant での classpath の通し方には幾つかあるのですが、パッケージのような構造、要するにディレクトリを掘っていってパスを通すには pathelement を使う必要があります。一部抜き出して記載します。

before:

<target name="unittest">
	<junit printsummary="true">
		<formatter type="plain" />
		<classpath>
                        <!-- ここがダメだった。-->
			<fileset dir="build/classes">
				<include name="*.class"/>
			</fileset>
			
			<fileset dir="lib">
				<include name="*.jar" />
			</fileset>
		</classpath>
		<batchtest fork="yes" todir="report">
			<fileset dir="src/custom/test">
				<include name="**/*Test.java"/>
				<exclude name="**/TestAll.java"/>
			</fileset>
		</batchtest>
	</junit>
</target>

after:

<target name="unittest">
	<junit printsummary="true">
		<formatter type="plain" />
		<classpath>
                        <!-- こうするといい感じ。 -->
			<pathelement path="build/classes"/>
			
			<fileset dir="lib">
				<include name="*.jar" />
			</fileset>
		</classpath>
		<batchtest fork="yes" todir="report">
			<fileset dir="src/custom/test">
				<include name="**/*Test.java"/>
				<exclude name="**/TestAll.java"/>
			</fileset>
		</batchtest>
	</junit>
</target>

Gradle とか流行っていますが、メンテには ant の知識が必須ですよね。。。
参考までに。