我们正在为Eclipse RCP应用程序编写SWTBot测试。我们的RCP应用程序包括NatTable组件,并具有启用/禁用透视图的授权机制。从Eclipse启动测试套件时工作正常。现在我们正试图将它与Tycho整合。
这是为运行SWTBot测试套件而创建的pom.xml:
<?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测试套件时,我们收到以下错误:
[错误]无法在项目com.tsystem.rvs.client.gui.swtbot.test上执行目标org.eclipse.tycho:tycho-surefire-plugin:0.20.0:test(default-test):意外发生错误(返回码-1)。请参阅日志了解详情。 - &GT; [帮助1]
我的第一个问题是Tycho如何在不首先创建产品的情况下对我们的RCP应用程序执行测试?我尝试过几个样本,在这些样本中,测试套件在创建产品之前执行。我们有自定义配置的启动画面,登录机制到服务器,所以有额外的配置需要启动swtbot测试套件。我们已尝试使用一个透视图和视图启动RCP应用程序,并且它与tycho一起工作正常,但在我们的情况下,tycho无法启动应用程序。目标/数据和配置下也没有创建日志文件。
如果在执行SWTBot测试套件后创建产品,有人可以解释Tycho从哪里获取插件来启动应用程序吗?
答案 0 :(得分:1)
如果在执行SWTBot测试套件后创建产品,有人可以解释Tycho从哪里获取插件来启动应用程序吗?
这是一个很好的问题,它已经接近问题的根本原因。
但首先我们需要澄清术语“产品”。不幸的是,它可能意味着两件事:“产品”可能意味着org.eclipse.core.runtime.products
扩展点的扩展,或产品配置文件(*.product
)。对于测试,只有产品扩展是相关的。
类似地,对于应用程序,还有扩展点org.eclipse.core.runtime.applications
。
因此,为了使您的测试能够使用您的产品和应用程序,测试运行时需要包含定义产品和应用程序扩展的插件。 (扩展点扩展在插件的plugin.xml
中定义。)在Eclipse中,这通常是自动发生的,因为Eclipse包括测试运行时工作空间中的所有插件。然而,Tycho - 没有工作空间的概念 - 测试运行时只包含测试插件及其所有传递依赖项。您的测试插件似乎不依赖于定义产品和应用程序的插件,因此这就是测试执行失败的原因。 (顺便说一句,/target/work/configuration/config.ini
列出了由Tycho创建的测试运行时的所有插件。)
因此,要将带有产品和应用程序扩展的插件添加到测试运行时,您可以
Require-Bundle
,extraRequirements
测试插件项目。有关错误消息的更多详细信息:“返回代码-1”错误是由配置在测试运行时未定义的<application>
引起的。
配置未知<product>
不会阻止测试启动。在这种情况下,唯一可见的效果可能是/target/work/data/.metadata/.log
P.S。:自Tycho 0.22.0以来,如果在测试运行时配置了未定义的应用程序,则会有更明确的错误消息:
在测试运行时中找不到应用程序“xyz”。确保测试运行时包含定义此应用程序的包。