2011-08-10 13 views
3

単一のJUnitテストからどのメソッドが呼び出されているかを知る必要がある状況があります。たとえば、私は、次の擬似コードがある場合:UnitTestをクラスのJavaユニットテストの実行中のメソッド呼び出しのリスト

public class UnitTest {  
    public main() { 
    Circle c = new Circle() 
    c.getArea() 
    } 
} 

public class Circle { 
    public Circle() { 
    ... 
    }  
    public getArea() { 
    ... 
    getRadius() 
    } 
    private getRadius() { 
    ... 
    } 
} 

メソッド呼び出しの私の目的のために、私は順序を保持する必要はありませんが(この順序に従うかの知っているが呼び出し側のメソッド):

  1. UnitTest.main
  2. Circle.Circle
  3. Circle.getArea
  4. Circle.getRadius

本質的に、JUnitテストで実際にプログラムのどの部分が実行されているかを知りたいと思います。私はこれを動的に把握できると考えていますが、ツールやアプローチを見つけるのが難しいです。私が見つけたいくつかのツールの主な問題は、それらが非常に視覚的である(必要なデータを抽出するためにユーザーとのやり取りを必要とする)ことが多いということです。私は、GUIのアスペクトがないメソッド(XML、テキストなど)のリストを提供するものを探しています。最後に、私はスクリプトアプローチでテストスイートのためにこれを自動化しようとしています。私が使用して考えています

のアプローチのいずれかのようになります。

  • すべてのメソッド呼び出しでclass.methodをプリントアウトするためにJavaエージェントを使用しました。
  • すでに素晴らしいことだという、これを行うツールがあれば側面

を使用してトレース。そうでない場合は、私が指定したアプローチの1つを使用して自分の問題を解決するように軌道に乗っているように見えますか?

ご協力いただきありがとうございます。

emmarun -r xml     // To output to XML 
    -Dreport.sort=-method  // Sort method coverage in descending order 
    -Dverbosity.level=silent  // Minimize script output 
    -Dreport.metrics=method:1 // Flag any method with a 0% coverage 
    -Dreport.columns=method,name // Only show the method and name columns 
    -Dreport.depth=method  // Consider the data of method coverage 

答えて

2

は、次のとおりです。

はUPDATE-解決しよう を私は(ちょうど0%の範囲を超える任意の方法のためのレポートを解析する必要がある)メソッド呼び出しの情報を抽出するために、以下のコマンドでエマを使用することにしましたEmmaCoberturaなどの「カバレッジ」ツールをお探しですか?

+0

私はカバレッジツールを検討しました(現時点では、Emmaがレポートから目的の情報を簡単に抽出できるかどうかを見ています)。私はまだこの問題のより簡単な解決策を見つけることを試みています。実行中のプログラムのメソッド呼び出しリストを抽出するには、簡単な方法が必要です。 –

+0

EmmaとCoberturaは、クラスとメソッドの名前を含むXMLに結果をエクスポートできますか、要件を誤解しましたか? –

+0

Emmaを見て、私はXMLファイルから必要な情報をすべて取得できると確信しています。 –

1

のメソッドが呼び出される方法を知りたい場合は、coberturaまたはemmaのようなコードカバレッジツールを使用できます。

どちらもmaven、ant、eclipse との優れた統合を提供し、xmlまたはhtmlレポートを生成できます。

関連する問題