• ベストアンサー

JUnit結果出力をファイルに書き出す

お世話になります。 JUnitの結果をファイルに書き出すにはどうしたらよいでしょうか? eclipseを使ってテストを行っています。 junit.textui.TestRunnerを使用しています。 テストが失敗したりすると Time: 0.031 There was 1 failure: 1) 失敗したテスト名 スタックトレース FAILURES!!! Tests run: 18, Failures: 1, Errors: 0 のように表示されますが、 この結果をファイルに出力するにはどうしたらよいでしょうか?

  • Java
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • Harry_
  • ベストアンサー率55% (36/65)
回答No.1

ant の junit タスクと junitreport タスクを使えば 簡単にできます。 Javadoc のようなきれいなHTMLドキュメントも生成 してくれれます。

chi-kon
質問者

補足

早速のご回答ありがとう御座います。 上記の方法を試してみたのですが、 eclipseからだとうまく機能しませんでした。 コマンドプロンプトからのAnt実行ではうまくいくことは 確認できましたが、 eclipseからantの外部実行で行うと Junitでテストがエラーになる(failerではなくerror) JUnitReportがxalanがないよっていういう。 ということが起きてしまい挫折してしまいました。。。 (本当はこっちも解決したい。。。) ということで、 eclipseの実行(外部実行ではない)から行いたいのです。 Antを通さずにJUnitだけで行えないでしょうか?

関連するQ&A

  • AntでのJunitの試験(II)

    先ほどの「AntでのJunit試験」の続きです。(ベストアンサーを押してしまったため、返信が受けられなくなったため、新規にたちあげました。) 情報ありがとうございます。 ご指摘のように、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が使えるような書き方とかあるのでしょうか?

    • ベストアンサー
    • Java
  • AntでのJunitの試験

    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>

    • ベストアンサー
    • Java
  • JUnit4のアノテーションについて

    おおもととなる1つのテストケース(仮にA.class)内に対して、 @RunWith(Enclosed.class)アノテーションで、 複数のテストケース(仮にB.class、C.class)を、入れ子記述しています。 その中にある1つのテストケース(仮にB.class)で、 さらに、 @RunWith(Parameterized.class)アノテーションと、 @Parametersアノテーションを利用して、 テスト対象メソッドに渡す引数と期待値だけが異なるテスト (戻り値はCollectionで、Collectionの要素はObject配列とする) を複数回実行しています。 上記した1つのテストケース(仮にB.class)で、 Eclipse3.6上のJUnit4におきましては、 その1つのテストケースだけで 単体実行した際には、 全ての結果がOKになります。 しかし、 他にも存在している複数のテストケース(仮にC.class)とまとめて、 おおもととなる1つのテストケース(仮にA.class)から 実行した際には、上記した1つのテストケース(仮にB.class) でのみ、以下のJUnit4エラーが発生しています。 java.lang.Exception; No runnable methods at java.lang.reflect.Constructor.newInstance(UnKnown Source) このエラーを解消するには、どうすればよいでしょうか? (コンストラクタをインスタンス時のエラーのようでしたので、  以下に、コンストラクタ箇所を添付しておきます) public B( final String str_inTestData1, final int int_inTestData2, final int int_inTestData3, final int int_inCnt) { this.m_str_inTestData1 = str_inTestData1; this.m_int_inTestData2 = int_inTestData2; this.m_int_inTestData3 = int_inTestData3; this.m_int_inCnt = int_inCnt; } @RunWith(Enclosed.class)アノテーション内に対して、 ネストで作成したサブのテストケース用クラスに対しては、 @RunWith(Parameterized.class)アノテーションと、 @Parametersアノテーションを利用することは 出来ないというような制限などがあるのでしょうか? 以上です。よろしくお願いします。

    • ベストアンサー
    • Java
  • Springで親クラスのインジェクションはダメ?

    Springフレームワークで、Bean定義ファイルに親クラス、子クラスともに定義しました。 親クラスの単体テストとして、JUnitに親クラスのセッターを用意してテスト実行したところエラーとなりました。スタックトレースには、beanIdがuniqueでない旨のメッセージと、親クラスと子クラスのbeanIdが表示されています。 子クラスの定義をはずすとうまくいくところから、継承関係にあるクラスを定義して親をインジェクションするのはできないんじゃなかろうかと思うのですが、それを記したサイトが見当たりませんでした。 その辺りをのせてるマニュアルサイト等をご存知でしたら、教えてください。

  • XML::RSSをインストール時にmakeが失敗します

    make: *** [test_dynamic] エラー 255 というエラーが出て、インストールに失敗しました。 下記のようなエラーが出ていましたが、解決方法がわかりません。 わかる方がおられたら教えてください。お願いします。 Test Summary Report ------------------- t/load.t (Wstat: 512 Tests: 6 Failed: 1) Failed test number(s): 1 Non-zero exit status: 2 Parse errors: Tests out of sequence. Found (4) but expected (2) Tests out of sequence. Found (5) but expected (3) Tests out of sequence. Found (6) but expected (4) Tests out of sequence. Found (7) but expected (5) Tests out of sequence. Found (8) but expected (6)

  • SharedObject.getLocal()、オブジェクト名.data.変数の「変数」の部分に変数を入れる方法について

    SharedObject.getLocal()、オブジェクト名.data.変数の「変数」の部分に変数を入れる方法について ActionScript初心者なので頓珍漢な事を書いているかもしれませんが、 よろしくお願いします。 オブジェクト名.data.変数の変数の部分に変数を入れたく、 AS2.0で //////////////////////////////////////////////// my_hozon = SharedObject.getLocal("test", "/"); count = 0; for (count=0; count<=3; count++) { abc = "test_"+count; trace(abc); my_hozon.data.abc= "a"; trace(my_hozon.data.abc);//結果"a" trace(my_hozon.data.test_0);//結果"undefined" trace(my_hozon.data.test_1);//結果"undefined" trace(my_hozon.data.test_2);//結果"undefined" trace(my_hozon.data.test_3);//結果"undefined" } //////////////////////////////////////////////// と書いてみたのですが、 trace(my_hozon.data.abc); は結果が返ってきたのですが、 trace(my_hozon.data.test_0); trace(my_hozon.data.test_1); trace(my_hozon.data.test_2); trace(my_hozon.data.test_3); だとundefinedになり失敗しました。 どうすれば変数に変数が入るのか教えていただけないでしょうか。 よろしくお願いします。

  • antコマンドを、通常のunixコマンドへの変換

    antコマンドを、通常のunixコマンドへの書き下し方法をご教授下さい。 antの構文の定義については知識習得できるものの、 通常のコマンド形式への書き下しについては見当たらず困っています。 下記のant実行形式(build.xml)ファイルを通常のunixコマンドに書き下すとどのようになりますか? もしくは、書き下すための良いサイトの検索方法などありましたらご教授頂けると幸いです。 例えばjavac に関してもオプションとして sourceは見当たるものの、destdirとclasspathrefについてはどのようにオプションに追加すべきかわかりません。 なお、${シンボル名} はちゃんと事前に定義されたものに置き換えられますので、簡易的に記述して頂いて問題ありません。 build.xml全文:https://www.dropbox.com/s/ht9cre199ic0ru6/build.xml?dl=0 112行目 <target name="cvc3" depends="configure-cvc3,check-config.status" unless="config.status.present"> <exec dir="../cvc3" executable="/usr/bin/make"/> <copy file="../cvc3/java/lib/${cvc3.jar}" todir="${lib.dir}" /> </target> cvc3フォルダにて $ /usr/bin/make $ copy ../cvc3/java/lib/libcvc3-3.0.0.jar 119行目 <target name="compile-tests" depends="jar"> <mkdir dir="${build.dir}/test"/> <javac srcdir="${test.dir}" destdir="${testClasses.dir}" classpathref="junit-classpath"/> </target> cvc3フォルダにて(?) $ mkdir ${build.dir}/test $ javac [オプション不明] 126行目 <target name="test" depends="compile-tests"> <junit fork="yes"> <env key="LD_LIBRARY_PATH" path="../cvc3/java/lib:../cvc3/lib" /> <classpath refid="junit-classpath"/> <batchtest> <formatter type="plain" usefile="false" /> <fileset dir="${testClasses.dir}"> <include name="**/*Test.class" /> <exclude name="**/RhinoTest.class"/> <exclude name="**/Cvc3Test.class"/> </fileset> </batchtest> </junit> </target> 141行目 <target name="test-rhino" depends="compile-tests" description="See some Rhino return values"> <junit> <classpath refid="junit-classpath"/> <batchtest> <formatter type="plain" usefile="false" /> <fileset dir="${testClasses.dir}"> <include name="**/RhinoTest.class"/> </fileset> </batchtest> </junit> </target> 154行目 <target name="test-cvc3" depends="compile-tests" description="Make sure that cvc3 runs properly"> <junit fork="yes"> <env key="LD_LIBRARY_PATH" path="../cvc3/java/lib:../cvc3/lib" /> <classpath refid="junit-classpath"/> <batchtest> <formatter type="plain" usefile="false" /> <fileset dir="${testClasses.dir}"> <include name="**/Cvc3Test.class"/> </fileset> </batchtest> </junit> </target> </project>

  • FreeBSDの"LOGIN FAILURE"のログはどこに?

    FreeBSD3.4を使っています。 rootユーザにdaemonから毎日送られてくるメール (Subject: thishost.xxx.jp security check output) の中の項目に thishost.xxx.jp login failures: Sep 12 11:52:35 hostname login: 1 LOGIN FAILURE ON ttyv0 Sep 13 14:12:20 hostname login: 1 LOGIN FAILURE FROM thishost : というのがあるのですが 随分前のログイン失敗記録が毎日送られ続けています。 このログはどこかのファイルに記録されているのだと思うのですが そのファイルがどこにあるか教えていただけないでしょうか。 また、 ・そのログファイルは内容を(または、ファイルごと)消去してもかまわないものなのか、 ・この類のメールを停止できるのか  (停止しても問題なければ) についても、教えていただけたらと思います。 基本的なことで申し訳ありませんが、よろしくお願い致します。

  • VBAでXCOPYの実行結果を取得したい

    VBAでshell関数を利用してXCOPYを実行し、テキストファイルにその実行結果を出力しています。 しかし、結果には D:\>xcopy D:\test\ssss.txt D:\test2 ファイルが見つかりません - ssss.txt 0 個のファイルをコピーしました もしくは D:\>xcopy D:\test\sssss.txt D:\test2 D:\test\sssss.txt 1 個のファイルをコピーしました というDOS画面で表示される内容が出力されているだけです。 ここでコピーに失敗している(0個のファイルをコピーしました)ファイル名だけを取得することは可能でしょうか? 色々サイトを検索してみましたが、答えが見つかりません。 恐れ入りますが、どなたかご存知の方がいらっしゃいましたらご教示ください。 よろしくお願いします。

  • eclipseとantのコンパイル結果が異なる件について。

    eclipseとantのコンパイル結果が異なる件について。 coberturaの導入を検討してい原因が分からず困っています。 困っているのはcobertura自体ではなく、antでコンパイルしたクラスファイルがどうもおかしいのです。 ※antはdos上ではなく、eclipseで行いましたが、dosでも同様のようでした。 eclipseでコンパイルしたクラスファイルの半分弱のサイズになっています。 本来は同じものになるのを期待していたのですが・・・。もちろん何か私の設定ミスだと思いますので、アドバイス頂けないでしょうか。 クラス1 package sample; import java.util.Date; public class Sample1 { public void func() { Date d = new Date(); if ((d.getTime() % 2) == 0) { System.out.println("true"); } else { System.out.println("false"); } } } クラス2 package sample; import junit.framework.TestCase; public class Sample1Test extends TestCase { public void testFunc() { Sample1 s = new Sample1(); s.func(); } } build.xml(文字数の関係でコンパイルに関係ない箇所は省きました) <?xml version="1.0" encoding="Shift_JIS"?> <project name="javahelloant" default="clean" basedir="./"> <!-- プロパティ 開始 --> <!-- libがあるディレクトリ --> <property name="lib.dir" value="lib"/> <!-- ソースファイルがあるディレクトリ --> <property name="src.dir" value="src"/> <property name="test.dir" value="test"/> <!-- クラスファイルの出力先ディレクトリ --> <property name="classes.dir" value="bin"/> <property name="classes-test.dir" value="bin-test"/> <!-- プロパティ 終了 --> <!-- パス 開始 --> <path id="classpath"> <fileset dir="${lib.dir}"> <include name="**/*.jar" /> </fileset> <pathelement location="${classes.dir}"/> </path> <!-- パス 終了 --> <!-- ターゲット 開始 --> <!-- コンパイル --> <target name="compile"> <javac srcdir="${src.dir}" destdir="${classes.dir}" /> <javac srcdir="${test.dir}" destdir="${classes-test.dir}" classpathref="classpath" /> </target> </project>

    • ベストアンサー
    • Java