6

特に testRunFinished のために、 JUnitCore のリスナーとして追加したいテスト インフラストラクチャ クラスがいくつかあります。ant のタスクから Junit 4 を呼び出しています。

リスナーを追加できるように、タスクによって作成された JUnitCore にアクセスする方法はありますか?

4

3 に答える 3

2

ant の junit タスクからではありません。

テストスイートを「手動で」実行するメインメソッドを作成するのが最善です。

package test;

import org.junit.runner.Request;
import org.junit.runner.Result;
import org.junit.runner.Runner;
import org.junit.runner.notification.RunListener;
import org.junit.runner.notification.RunNotifier;

public class RollYourOwnTestRun {

    public static void main(String[] args) {
        Runner runner = Request.classes(StackTest.class).getRunner();
        RunNotifier notifier = new RunNotifier();
        Result result= new Result();
        RunListener listener= result.createListener();
        notifier.addListener(listener);
        notifier.addListener(...); // add your listener
        notifier.fireTestRunStarted(runner.getDescription());
        runner.run(fNotifier);
        notifier.fireTestRunFinished(result);
    }

}
于 2009-09-08T08:22:00.350 に答える
1

これは少し遅れていますが、(から) RunListenerant にラップしてみてください:JUnitResultFormatterorg.apache.ant:ant-junit

import static org.apache.tools.ant.taskdefs.optional.junit.JUnitVersionHelper.getTestCaseClassName;
import static org.apache.tools.ant.taskdefs.optional.junit.JUnitVersionHelper.getTestCaseName;
import static org.junit.runner.Description.createTestDescription;

public class MyJunitFormatter implements JUnitResultFormatter {

private final MyListener delegate = new MyListener();

@Override
@SneakyThrows(Exception.class)
public void endTest(Test test) {
    delegate.testFinished(
            createTestDescription(
                    getTestCaseClassName(test),
                    getTestCaseName(test)));
}

// ....

https://mail-archives.apache.org/mod_mbox/ant-user/201009.mbox/%3C86A2FB65A5F8B549A8E8939DC00F8269332B4A@exchange03.nexus.commercehub.com%3Eを参照してください。

于 2015-09-04T14:27:25.830 に答える
1

@RunWithアノテーションが役立つ可能性があります (いくつかのマイナーな API ベスト プラクティス違反があります): 独自の Runner を指定し、オーバーライドしますrun(RunNotifier notifier)。RunNotifier を介して、現在内部のみとしてマークされている add*Listener-API を使用できます。幸運を!

于 2009-09-16T14:33:17.377 に答える