2012-09-16 19 views
14

プロセスレベルの制御にpythonと内部状態の検査にjunitを組み合わせたクラウドシステム用のテストセットアップがあります。本質的には、私はクラウドとしてサーバにいくつかのVMを持ち込み、次にクラウドのメンバーであるjunit VMをテストし、内部状態をチェックします。私たちの既存のクラウド管理は、Pythonによって推進されており、私はこれを維持したいと考えています。コマンドラインからのJUnitレポートの生成

私は

java -ea -cp <classpath> org.junit.runner.JUnitCore <tests> 

を経由してJUnitのコマンドラインを実行しますが、これはレポートファイルを生成しません作業を設定しています。私はアリがXMLレポートを生成できることを知っていますが、私はこのプロセスでアリを関与させたくありません(私はすでに十分な部品が動いています)。

junitをコマンドラインから起動してレポートを作成する方法はありますか?

理想的には、私はjunitテストでxmlレポートを生成し、pythonテストではxmlレポートを生成し、それらをまとめてCIシステムで消費するようにします。

更新日:コマンドライン実行では、Windows、Linux、Macをサポートしている必要があります。外部のアリを出荷することはできませんが、の場合はのオプションがあります。

+0

WindowsまたはUnix(コマンドラインの観点から)? –

答えて

16

JUnitライブラリにはXML出力オプションがありません。このようなことを実現するには、自分自身を書く必要があります。RunListenerは、出力を待ち受け、XMLファイルを作成します。

しかし、XMLファイルをCIシステムで読むことができるように正しい形式で取得するには、build.xml(JUnitReport)を使用してコマンドラインからantを使用する方がはるかに簡単だと思います。 、またはjava api:How can i use Apache ANT Programmaticallyを使用します。

EDIT:プログラムでコマンドライン

  • 使用ANTから

    1. 使用アリ(Java APIを使用して)
    2. 作成JUnitCore
    3. と直接
    4. をXMLJUnitResultFormatterを使用します。最初に、私たちは4つのオプションを持っていました正しいXML出力を生成するカスタムRunListener。 OPによって追加の制約を考えると

    我々はAntのJUnitのタスクをより詳しく見て後1

    を排除し、コマンドラインからアリを使用することはできません、使用することは不可能であると思われますこれはJUnitCore(TestListenerを追加する)ではantがテストクラスの名前を直接使用するため、ブリッジクラスを実行できないためです。 XMLJUnitResultFormatter.java

    から
    private void formatError(String type, Test test, Throwable t) { 
        ... 
        nested.setAttribute(ATTR_TYPE, t.getClass().getName()); 
    
        String strace = JUnitTestRunner.getFilteredTrace(t); 
        Text trace = doc.createTextNode(strace); 
        nested.appendChild(trace); 
    } 
    

    これは、Java APIを介して、プログラムで3

    呼び出しのAntを排除します。私はこれに関する最近の文書を見つけることができません。これは難しいようです。

    最後に、XMLJUnitResultFormatterのコードをベースとして、カスタムRunListenerを4回実行します。そして、私はそれをgithubで公開します。comので、この質問は正しく答えることができます:-)

  • +0

    申し訳ありませんが、私は私が正しくあなたを理解していれば、あなたは私がすべきことを示唆している ...改行を表示させることができないように見える: 3主なカスタムを書く)アリ瓶 2を含む)に 1)アリ瓶のRunListenerを追加JUnitCoreインスタンス に移動します。4)それをリッピングしますか? 1)ant jarを含む 2)より直接的に呼び出すとJUnitCore部分が処理されますか? – Matt

    +1

    Antはjunitを呼び出し、テストを実行します。つまり、build.xmlを提供し、antを起動します。最も簡単な方法は、antがシステムのどこかにインストールされていることを確認し、コマンドラインからantを実行することです。 Javaの代わりにあなたは蟻を持っているでしょう... –

    +1

    悲しいかな、私はできないことの一つです。このメッセージは高値から下がってきました。 – Matt

    関連する問題