"发生意外错误(返回代码-1)"当试图用Tycho启动SWTBot测试套件时

时间:2014-08-07 19:04:18

标签: maven eclipse-rcp tycho swtbot tycho-surefire-plugin

我们正在为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从哪里获取插件来启动应用程序吗?

1 个答案:

答案 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创建的测试运行时的所有插件。)

因此,要将带有产品和应用程序扩展的插件添加到测试运行时,您可以

  • 添加依赖项,例如{/ 1}}在测试插件的清单中对他们进行了Require-Bundle
  • 或按照here所述配置extraRequirements测试插件项目。

有关错误消息的更多详细信息:“返回代码-1”错误是由配置在测试运行时未定义的<application>引起的。

配置未知<product>不会阻止测试启动。在这种情况下,唯一可见的效果可能是/target/work/data/.metadata/.log

中的“无法找到产品xxx.product.id”日志条目

P.S。:自Tycho 0.22.0以来,如果在测试运行时配置了未定义的应用程序,则会有更明确的错误消息:

  

在测试运行时中找不到应用程序“xyz”。确保测试运行时包含定义此应用程序的包。