В настоящее время я пишу тесты для приложения, которое может загружать видео и воспроизводить / приостанавливать их.Мы используем maven в качестве фреймворка, а junit в качестве фреймворка.Тестовый код выглядит следующим образом:
public class UnitTest extends ApplicationTest {
private MediaPlayer mediaPlayer1;
@FXML
private MediaView mediaView1;
@FXML
private Button playPauseButton;
private static Media media;
@Override
public void start(Stage stage) throws Exception {
try {
Parent root = FXMLLoader.load(getClass().getResource("videoMain.fxml"));
stage.setTitle("Vorprojekt");
Scene scene = new Scene(root, 1300, 900);
stage.setScene(scene);
stage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
@Before
public void setup() throws Exception {
try {
media = new Media(getClass().getResource("small.mp4").toString());
mediaPlayer1 = new MediaPlayer(media);
mediaView1 = find("#mediaView1");
mediaView1.setMediaPlayer(mediaPlayer1);
playPauseButton = find("#playPauseButton");
} catch (Exception e) {
}
}
@After
public void tearDown() {
}
@Test
public void playPauseButtonTest() {
mediaPlayer1.play();
clickOn(playPauseButton);
try {
assertTrue(mediaPlayer1.getStatus().equals(Status.PAUSED));
} catch (AssertionError ae) {
fail("Status should be paused but is " + mediaPlayer1.getStatus());
}
}
}
Этот тест выполняется без проблем, если я запускаю его локально на своем устройстве.Но если я запускаю его на своем Gitlab CI, выдается следующее сообщение об ошибке:
[INFO] Запуск UnitTest [ОШИБКА] Выполнение тестов: 1, Сбои: 1, Ошибки: 0, Пропущено: 0,Прошло времени: 1.776 с <<< НЕУДАЧИ!- в UnitTest [ОШИБКА] playPauseButtonTest (UnitTest) Прошло время: 1.772 с <<< ОТКАЗ!java.lang.AssertionError: Статус должен быть приостановлен, но ОСТАНОВЛЕН на UnitTest.playPauseButtonTest (UnitTest.java:65) </p>
[INFO] [INFO] Результаты: [INFO] [ОШИБКА] Сбои: [ОШИБКА]
UnitTest.playPauseButtonTest: 65 Состояние должно быть приостановлено, но ОСТАНОВЛЕНО [ИНФО] [ОШИБКА] Выполнены тесты: 1, Сбои: 1, Ошибки: 0, Пропущено: 0 [ИНФО] [ОШИБКА] Есть ошибки теста.
Пожалуйста, обратитесь к / builds / swp18 / tj18a / Code / target / surefire-reports для отдельных результатов теста.Пожалуйста, обратитесь к файлам дампа (если таковые имеются) [дата] .dump, [дата] -jvmRun [N] .dump и [дата] .dumpstream.
Мой .gitlab-ci.yml выглядиткак это:
maven_build:
image: tomsontom/oracle-java8-mvn
script:
- cd Code
- apt-get update && apt-get upgrade -y
- DEBIAN_FRONTEND=noninteractive apt-get install openjfx xserver-xorg- video-dummy xinit fonts-freefont-ttf libavformat-ffmpeg56 wget libswt-gtk-3-java firefox -y
- wget https://raw.githubusercontent.com/thewtex/docker-opengl/master/etc/X11/xorg.conf -O /etc/X11/xorg.conf
- xinit -- :0 -nolisten tcp vt$XDG_VTNR -noreset +extension GLX +extension RANDR +extension RENDER +extension XFIXES &
- DISPLAY=:0 mvn --batch-mode package
- cd target && ls -la
Есть идеи, как настроить код, чтобы тест также работал в CI gitlab?
Я благодарен за каждую подсказку, потому что у меня больше нет идейкак это возможно исправить.
Вот важная часть моего pom.xml, если вам интересно.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
<version>3.0.0-M3</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>3.0.0-M3</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>