监控ng测试从其他eclipse插件运行

时间:2011-11-01 14:00:07

标签: java eclipse eclipse-plugin testng

我正在开发一个eclipse插件,显示用户指向测试日志的链接。在当前的实现中,我们注册了一个jUnit运行监听器,它可以在每个套件运行时更新视图,并且运行正常,问题是测试框架现在也支持TestNG,如果用户运行,我们将需要TestNG插件中的等效功能一个TestNG测试用例。

我发现此功能请求http://jira.opensymphony.com/browse/TESTNG-313表明我正在寻找的功能可供使用,至少我是如何理解它的。无论如何,我似乎无法让它发挥作用。我尝试在视图设置中创建和定义不同的对象,这些对象应该监听ng-runs并调用例如onFinish()但是我没有找到一种方法来按照你的方式“注册”监听类,如果你定义一个来自suite.xml或代码的常规侦听器。 TestNG类似乎是一个单例,但仅适用于每个testrun,而不是用于监视套件运行时的插件。 TestNGPlugin类似乎没有适当的方法。只是将TestListenerAdapter或ITestListener接口实现为私有类不起作用。

有谁知道哪个是最适合实现的类或接口,如果需要,应该如何注册?

顺便说一下,我使用的是Eclipse 3.7.0和TestNG 6.1.1。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的另一种方法,最终可能是一个更好的解决方案。我监视org.eclipse.debug.core.DebugPlugin以进行任何类型的任何启动,并根据它进行更新。这段代码使它成功。

    ILaunchesListener2 runListener = new ILaunchesListener2() {
                @Override
                public void launchesAdded(ILaunch[] arg0) {
                }
                @Override
                public void launchesChanged(ILaunch[] arg0) {       
                }
                @Override
                public void launchesRemoved(ILaunch[] arg0) {
                }

                @Override
                public void launchesTerminated(ILaunch[] arg0) {
                    Display.getDefault().asyncExec(new Runnable() {
                        public void run() {

                            updateTestRunList();
                            viewer.setInput(testRuns);
                            viewer.refresh();
                        }
                    });

                }
            };
            DebugPlugin.getDefault().getLaunchManager().addLaunchListener(runListener);