我正在尝试从这里[1]调整pde单元测试自动化过程来处理多个测试套件。本文使用org.eclipse.jdt.internal.junit.model.ITestRunListener2,它无法处理多个测试套件。我正在考虑使用org.eclipse.jdt.junit.TestRunListener。
我尝试将org.eclipse.jdt.internal.junit.model.ITestRunListener2的包含实现转换为实现junit.runner.TestRunListener,因为它的testRunStarted()方法包含测试套件名称参数但无法找到任何示例关于如何使org.eclipse.jdt.internal.junit.model.RemoteTestRunnerClient适应它(我不确定即使PDE测试结果协议支持它)。
[1] http://www.eclipse.org/articles/article.php?file=Article-PDEJUnitAntAutomation/index.html
你好,这是OP,无法添加一个commnet Paul Webster的回复,所以我发帖了。
RemoteTestRunnerClient的用途是根据org.eclipse.jdt.internal.junit.runner.MessageId中定义的协议将通知委托给它的侦听器,并从TCP套接字读取消息。问题是TEST_RUN_START / END消息不包含套件的名称,导致所有测试都与同一套件相关联。
我在设置自动化测试框架时确实看了Eclipse测试框架,但是没有找到任何令人信服的理由来支持它而不是文章中提出的方法。我不确定,但我认为文章不使用ETF的原因是缺乏对测试结果聚合的充分支持。到目前为止,我可以理解能够指定哪些套件应该通过test.xml文件运行,因为我目前正在使用传递给'org.eclipse.pde.junit.runtime.coretestapplication'应用程序的'-classnames'参数。我不介意考虑改用ETF,但希望事先有一个令人信服的理由。
最重要的是,我的设置完成了所需要的99%,我更喜欢快速& -dirty解决方法,而不是完整的测试系统转换。
答案 0 :(得分:0)
我认为你不必做任何事情。 RemoteTestRunnerClient
。它需要ITestRunListener2
,由TestSessionNotifier
实现。这会将事件发送到由ITestSessionListener
实施的TestRunListenerAdapter
,并将其转发到TestRunListener
话虽如此,该文章中的一个指针是Eclipse Test Framework [1]。
我们用它来运行我们的插件测试。获得框架本身后,每个测试插件只需要一个 test.xml [2]文件。该文件可以指定UI测试和无头测试,并可以列出该插件的多个TestSuite。我把我们的例子联系起来了。
[1] http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.test/testframework.html?view=co