【问题标题】:"An unexpected error occured (return code -1)" when trying to launch SWTBot test suite with Tycho尝试使用 Tycho 启动 SWTBot 测试套件时出现“意外错误(返回代码 -1)”
【发布时间】:2014-10-01 03:34:49
【问题描述】:

我们正在为我们的 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)。有关详细信息,请参阅日志。 -> [帮助 1]

我的第一个问题是 Tycho 如何在不创建产品的情况下对我们的 RCP 应用程序执行测试?我尝试了几个示例,在这些示例中,测试套件是在创建产品之前执行的。我们有启动屏幕的自定义配置,服务器的登录机制,所以启动 swtbot 测试套件是否需要额外的配置。我们尝试以一种视角和视图启动 RCP 应用程序,它与 tycho 配合良好,但在我们的案例中,tycho 无法启动应用程序。在目标/数据和配置下也没有创建日志文件。

如果产品是在执行 SWTBot 测试套件之后创建的,那么有人可以解释 Tycho 从哪里获取插件来启动应用程序吗?

【问题讨论】:

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


【解决方案1】:

如果产品是在执行 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 在测试插件的清单中给他们,
  • 或配置测试插件项目的extraRequirementshere。

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

配置未知的&lt;product&gt; 不会阻止测试启动。在这种情况下,唯一可见的效果可能是 /target/work/data/.metadata/.log 中的“找不到产品 xxx.product.id”日志条目

P.S.:从 Tycho 0.22.0 开始,如果配置的应用程序在测试运行时未定义,则会出现更明确的错误消息:

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

【讨论】:

    猜你喜欢
    • 2022-12-22
    • 2018-10-08
    • 1970-01-01
    • 2021-12-29
    • 2011-06-13
    • 2019-04-24
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    相关资源
    最近更新 更多