
Antのbuild.xmlを下記のように記述して、Ant unit-testを実行させると、下記の[junit]の試験がFAILEDになってしまいます。これと同じJunitの試験はEclipse上のJunitの試験ではパスしていますので、Javaのテストプログラムそのものには間違いはありません。(同じファイルを使っています。)
レポートファイルのエラーを見てみると、initializationErrorで、
org/hamcrest/SelfDescribing
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
のようなエラーをはいていますが、理由が分かりかねています。
Antは、apache-ant-1.9.2、Junitは、juint-4.11.jarを使っています。
多分、下記xmlファイルの<junit>の書き方の問題ではないかと思うのですが、
AntのJunitの試験に詳しい方でお分かりになる方ございましたらアドバイスをお願いします。
<?xml version="1.0" encoding="UTF-8"?>
<project>
<property name="output" value="build/output"/>
<target name="compile">
<mkdir dir="${output}/classes"/>
<javac srcdir="src" destdir="${output}/classes"/>
</target>
<target name="unit-test" depends="compile">
<path id="for-unit-test">
<pathelement location="${output}/classes"/>
<pathelement location="${output}/test-classes"/>
<pathelement location="build/lib/junit-4.11.jar"/>
</path>
<mkdir dir="${output}/test-result"/>
<mkdir dir="${output}/test-classes"/>
<javac srcdir="test/src" destdir="${output}/test-classes">
<classpath refid="for-unit-test"/>
</javac>
<junit>
<classpath refid="for-unit-test"/>
<batchtest todir="${output}/test-result">
<fileset dir="test/src">
<include name="**/*Test.java"/>
</fileset>
<formatter type="xml"/>
</batchtest>
</junit>
<junitreport todir="${output}/test-result">
<fileset dir="${output}/test-result">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${output}/test-result/report"/>
</junitreport>
</target>
</project>
No.1ベストアンサー
- 回答日時:
EclipseのJUnit実行時に読み込まれているhamcrest coreが、antから実行する時のクラスパスに含まれていないのだろうて。
クラスパスにhamcrest coreのjarを含めてあげましょう。それはhamcrest-core-1.3.jarかも知れないし、他のバージョンかも知れないしファイル名が全然違うかも知れない。一番手っ取り早いのは必要なjarは全部プロジェクトの中に含めておく事だ。
この回答への補足
情報ありがとうございます。
ご指摘のように、EclipseのUnitテストで使っている、org.hamcrest.coreのjarファイルを
build\libの下に置いて走らせるとJunitの試験はパスするようになりました。
ありがとうございました。
後、ひとつだけ分かれば教えていただきたいのですが、
現在、コマンドプロンプトのbuild.xmlが置いてあるディレクトリから、>Ant unit-test
を実行すると、Junitの試験はパスして、<junitreport>の記述でテスト結果をはいてくれて全て
OKなのですが、
Eclipseのアウトラインからunit-testを右クリックして->実行->Antビルド
を実行させると、Junitの試験はパスするのですが、<junitreport>の所で、
Error! staticでないJava関数'replace'の最初の引数は無効なオブジェクトの参照です。
Error! スタイルシートをコンパイルできませんでした。
Fatal Error! データ型'void'を'reference'に変換できません。Cause: データ型'void'を'reference'に変換できません。
となって、テスト結果のはき出しには失敗してしまうようなのです。
コマンドプロンプトで実行した場合は、ant-1.9.2を使っているのですが、Eclipseのデフォルトの
プラグインのものはant-1.8.4のものを使っているようです。
Antタスクのjunitreportが使えるAntのヴァージョンのようなものがあるのでしょうか?
また、1.8.4でもjunitreportが使えるような書き方とかあるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleログインボタンのデザイ...
-
プログラミングの問題です。大...
-
JDONWROADER2のエラー修復
-
スプレッドシートからリマイン...
-
googleスプレッドシートのスク...
-
googleスプレッドシートのGASに...
-
Verilogについて質問です。この...
-
論理回路設計をVerilogで行う問...
-
ゲーム開発の入門書を探しています
-
jdbcでinsert,delete,createをe...
-
session,requestはjspで未定義...
-
サーブレットをapacheで公開す...
-
下記のリストならno002が含まれ...
-
is this even a thing?
-
JAの支部?地域の農協のカード...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
-
あんまりお料理しないのに台所...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaでのエラーについて
-
javaからデータベースに接続 エ...
-
java と javax の違いは?
-
struts2環境構築で不具合が出て...
-
マイクロソフトのコミュミティ...
-
autoCAD2017で面積を計測して、...
-
Win32 API メニューのfType,fMa...
-
Tomcatでエラー
-
DBから全権検索したデータをjsp...
-
propertiesが読み込めなくてnul...
-
マイクラ Ender IO 入れたらク...
-
マイクラがクラッシュします。
-
System.inをClose()すると例外...
-
JasperExceptionのエラーログの...
-
$_SERVER['HTTP_USER_AGENT'] ...
-
JSFで、マネージビーンに画面の...
-
javacのコンパイルでファイルが...
-
BufferedInputStreamのreadメソ...
-
log4jを使用し、JAVAのバッチプ...
-
【javadoc】パッケージを一括で...
おすすめ情報