Ant 如何访问当前JUnitCore以添加侦听器?

Ant 如何访问当前JUnitCore以添加侦听器?,ant,junit,task,Ant,Junit,Task,我想添加一些测试基础结构类作为JUnitCore的侦听器,特别是针对testRunFinished。 我正在从ant的任务中调用JUnit4 我是否有办法访问任务创建的JUnitCore,以便添加侦听器 不是来自ant的junit任务 您最好编写一个“手动”运行测试套件的主方法 注释可能会有帮助(在一些轻微的API最佳实践违规情况下):您提供自己的运行程序,并覆盖run(RunNotifier-notifier)。通过RunNotifier,您可以使用add*Listener API,该API当

我想添加一些测试基础结构类作为JUnitCore的侦听器,特别是针对testRunFinished。 我正在从ant的任务中调用JUnit4


我是否有办法访问任务创建的JUnitCore,以便添加侦听器

不是来自ant的junit任务

您最好编写一个“手动”运行测试套件的主方法


注释可能会有帮助(在一些轻微的API最佳实践违规情况下):您提供自己的运行程序,并覆盖
run(RunNotifier-notifier)
。通过RunNotifier,您可以使用add*Listener API,该API当前仅标记为内部。祝你好运

这有点晚了,但是您可以尝试将您的
RunListener
包装到ant的
JUnitResultFormatter
(来自
org.apache.ant: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);
    }

}
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)));
}

// ....