[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 の知識が必須ですよね。。。
参考までに。