Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUnit RunNotifier和fireTestRunFinished_Java_Ant_Junit_Jboss Arquillian - Fatal编程技术网

Java JUnit RunNotifier和fireTestRunFinished

Java JUnit RunNotifier和fireTestRunFinished,java,ant,junit,jboss-arquillian,Java,Ant,Junit,Jboss Arquillian,我试图从Ant(1.8.2,支持junit4)执行一些Arquillian测试,但是Ant任务似乎没有调用RunNotifier.fireTestRunFinished(),Arquillian测试运行程序依赖于此从容器中取消部署Arquillian jmx war。 JUnit的Eclipse集成调用了未完成的方法,从那里一切都正常工作 我环顾junit javadoc,在RunNotifier中看到了这一点: public void fireTestRunFinished(Result re

我试图从Ant(1.8.2,支持junit4)执行一些Arquillian测试,但是Ant任务似乎没有调用RunNotifier.fireTestRunFinished(),Arquillian测试运行程序依赖于此从容器中取消部署Arquillian jmx war。 JUnit的Eclipse集成调用了未完成的方法,从那里一切都正常工作

我环顾junit javadoc,在RunNotifier中看到了这一点:

public void fireTestRunFinished(Result result)
Do not invoke.
此外,javadoc类的描述说明如下:

该类的未来发展可能会将fireTestRunStarted(描述)和fireTestRunFinished(结果)移动到一个单独的类中,因为每次运行只能调用它们一次

但它没有具体说明它将被移动到哪里

环顾junit的源代码,我发现调用fireTestRunFinished的唯一地方是在这个方法中:

/**
 * Do not use. Testing purposes only.
 */
public Result run(Runner runner) {
    Result result= new Result();
    RunListener listener= result.createListener();
    fNotifier.addFirstListener(listener);
    try {
        fNotifier.fireTestRunStarted(runner.getDescription());
        runner.run(fNotifier);
        fNotifier.fireTestRunFinished(result);
    } finally {
        removeListener(listener);
    }
    return result;
}
正如你所看到的,它说…不要调用

我的问题是,JUnit计划在所有测试运行完毕后通知自定义运行程序做什么?如果不使用当前的API,还有其他可用的吗? 现在我的选项是修改Arquillian运行程序,使其不再依赖于RunListener,或者修改ant任务以调用RunNotifier.fireTestRunFinished。无论哪种方式,我都必须更改我不拥有的代码…这显然不是我的第一选择

…或者我可以扩展Arquillian runner,重写run()方法,并在super.run()之后执行RunListener所做的操作


有人有其他办法吗?

你有没有办法解决这个问题?我有完全相同的问题。@Waxolunist我基本上扩展了Arquillian runner,并在super.run()之后进行了清理。看来是合理的。顺便说一句,我换成了黄瓜。