イベントリスナーTestCaseが開始された・・・エラーが発生した・・・ などのタイミングをリスナーすることができます。 junit.framework.TestResult#addListener(TestListener listener)
・・・で。 このリスナーを使うことにより、テスト結果を取得することが出来るので、独自形式でレポート出力する事などが出来るようになります。 TestResultというクラスは テスト開始されるときに Runnerから渡されます。 junit.textui.TestRunner#doRun(Test suite, boolean wait)
どこで TestResultを取得して addListenerしたらいいか・・・ですが、実行TopのTestSuiteやTestCase などのクラスで public void run(TestResult result)
を上書きしてしまえばOKかと。 public void run(TestResult result) { result.addListener(new MyTestListener()); super.run(result); }
TestListener には 以下のメソッドを実装します。 /** * An error occurred. */ public void addError(Test test, Throwable t); /** * A failure occurred. */ public void addFailure(Test test, AssertionFailedError t); /** * A test ended. */ public void endTest(Test test); /** * A test started. */ public void startTest(Test test);
良く見てはないけど、Ant-JUnitのレポート出力も多分このリスナーでやってるのかと思います。 あ、注意点としては このリスナーへのイベント発火はjunit.framework.TestSuite のクラスはやってくれません。 もちろん junit.framework.TestCase はやってくれますが。 TestSuiteの時にもリスナーへイベント発火したい!って時には TestSuiteのクラスで public void run(TestResult result) { result.startTest(this); super.run(result); result.endTest(this); }
・・・と自分で イベント発火してあげましょぅ。 |