我们正在为Eclipse应用程序编写SWTBot测试。我们的RCP应用程序包括NatTable组件,并具有启用/禁用透视图的授权机制。测试套件在从Eclipse启动它时运行良好。现在我们正试图把它和Tycho结合起来。
这是为运行pom.xml测试套件而创建的SWTBot:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.test</groupId>
<artifactId>com.test.demo.client.gui</artifactId>
<version>6.0.0-SNAPSHOT</version>
</parent>
<artifactId>com.tsystem.demo.client.gui.swtbot.test</artifactId>
<packaging>eclipse-test-plugin</packaging>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>0.20.0</version>
<configuration>
<useUIHarness>true</useUIHarness>
<useUIThread>false</useUIThread>
<!-- launch our product and application in the tests -->
<product>com.test.demo.client.gui.ui.product</product>
<application>com.test.demo.client.gui.ui.application</application>
</configuration>
</plugin>
</plugins>
</build>
</project>当我们执行Tycho来启动SWTBot测试套件时,我们得到的错误如下:
错误未能在项目org.eclipse.tycho:tycho-surefire-plugin:0.20.0:test上执行目标com.tsystem.rvs.client.gui.swtbot.test(默认测试):出现意外错误(返回代码-1)。详细信息,请参阅日志。->帮助1
我的第一个问题是Tycho如何在不首先创建产品的情况下在RCP应用程序上执行测试?我尝试过很少的示例,在这些示例中,在创建产品之前执行测试套件。我们有自定义的配置启动屏幕,登录机制到服务器,所以是否有额外的配置要求启动swtbot测试套件。我们尝试用一个透视图和视图启动RCP应用程序,而且它在tycho中运行得很好,但在我们的例子中,tycho无法启动应用程序。在目标/数据和配置下也没有创建日志文件。
如果产品是在SWTBot测试套件执行后创建的,那么有人能解释Tycho从哪里使用插件来启动应用程序吗?
发布于 2014-11-14 15:24:15
如果产品是在SWTBot测试套件执行后创建的,那么有人能解释Tycho从哪里使用插件来启动应用程序吗?
这是一个很好的问题,它正接近你问题的根源。
但首先,我们需要澄清“产品”一词。不幸的是,它可能意味着两件事:“产品”可以是org.eclipse.core.runtime.products扩展点的扩展,或者是产品配置文件(*.product)。对于测试,只有产品扩展是相关的。
同样,对于应用程序,也有扩展点org.eclipse.core.runtime.applications。
因此,为了使您的测试能够使用您的产品和应用程序,测试运行时需要包含定义产品和应用程序扩展的插件。(扩展点扩展在插件的plugin.xmls中定义。)在Eclipse中,这通常是自动发生的,因为Eclipse在测试运行时中包含了来自工作区的所有插件。但是,它Tycho --没有工作区的概念--测试运行时只包含测试插件及其所有传递依赖项。您的测试插件似乎不依赖于插件定义产品和应用程序,因此这就是测试执行失败的原因。(顺便说一句,/target/work/configuration/config.ini列出了Tycho创建的测试运行时的所有插件。)
因此,要将带有产品和应用程序扩展的插件添加到测试运行时,可以
Require-Bundle,extraRequirements配置测试插件项目的这里。关于错误消息的更多细节:“返回代码-1”错误是由配置测试运行时中未定义的<application>引起的。
配置未知的<product>不会阻止启动测试。在这种情况下,唯一可见的效果可能是“无法找到产品xxx.product.id”日志条目在/target/work/data/.metadata/.log中
P.S.:从Tycho0.22.0开始,如果在测试运行时中未定义的应用程序配置了一个更显式的错误消息:
无法在测试运行时找到应用程序"xyz“。确保测试运行时包括定义此应用程序的包。
https://stackoverflow.com/questions/25190212
复制相似问题