我的项目使用TestFX对其JavaFX(TornadoFX)UI进行自动化测试。它具有大量的单元测试,可以独立地与视图交互,可以在本地和Travis上的Maven Surefire范围内可靠地工作。
我最近添加了一个集成测试,该测试在Maven Failsafe范围内运行,该测试将启动我的整个应用程序,单击JavaFX按钮,然后在声明前等待某些状态更改(较长的过程)。该测试可以在我的本地PC上运行并可靠地通过,但从不通过Travis CI。在Travis上,最终它将超时,等待通过单击按钮启动的过程触发的状态更改。
我已尝试通过执行以下步骤来找出故障的根源。
*IT
至*Test
)。这样可以使测试在Travis可靠地运行并通过。我不认为这是一个解决方案,因为这将是一种不良做法。但是,这可能表明我的Surefire和Failsafe插件配置之间存在环境差异。我尚未对Surefire配置进行任何自定义。
故障安全的POM片段:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.0</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<testSourceDirectory>${project.basedir}/src/integrationTest/kotlin</testSourceDirectory>
<systemPropertyVariables>
<coner-core.version>${coner-core.version}</coner-core.version>
</systemPropertyVariables>
</configuration>
</execution>
</executions>
</plugin>
.travis.yml:
language: java
sudo: false # Linux OS: run in container
matrix:
include:
- os: linux
dist: trusty
jdk: oraclejdk8
addons:
apt:
packages:
- oracle-java8-installer
before_script:
# Linux OS: Use framebuffer for UI
# See https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-xvfb-to-Run-Tests-That-Require-a-GUI
# Note: exporting DISPLAY in a separate shell file will not grant the script shell file access to it.
# To insure it has access, just use the following line.
- if [[ "${TRAVIS_OS_NAME}" == linux ]]; then export DISPLAY=:99.0; sh -e /etc/init.d/xvfb start; fi
script:
- ./mvnw verify -Dci=true
after_success:
- bash <(curl -s https://codecov.io/bash)
cache:
directories:
- $HOME/.m2
有人在使用TestFX进行集成测试以在Travis上正确执行时遇到过类似的困难吗?我怀疑我在某处缺少一些所需的配置,但不确定是什么。