Тестирование медиаплеера с помощью Gitlab CI и Junit - PullRequest
0 голосов
/ 28 февраля 2019

В настоящее время я пишу тесты для приложения, которое может загружать видео и воспроизводить / приостанавливать их.Мы используем 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>

1 Ответ

0 голосов
/ 05 марта 2019

Решение: было 2 проблемы, которые мы не решили.Прежде всего, виртуальный монитор был определен с размером 1366x768, а пользовательский интерфейс был инициализирован с размером 1300x900.Соответственно, кнопка воспроизведения / паузы не может быть достигнута.Вторая ошибка состояла в том, что медиаплееру нужно больше времени для инициализации в бегуне.Таким образом, после инициализации медиаплеера и после того, как статус должен перейти к воспроизведению, необходим цикл, чтобы дождаться смены медиаплеера.Следующий метод установки устранил проблему для нас:

  @Before
  public void setup() throws Exception {
    media = new Media(getClass().getResource("small.mp4").toString());
    mediaPlayer1 = new MediaPlayer(media);
    mediaPlayer1.setOnError(() -> fail("media error" + mediaPlayer1.getError().toString()));
    int retries = 0;
    while (mediaPlayer1.getStatus() != MediaPlayer.Status.READY) {
      System.out
          .println("media player not yet READY - current status: " + mediaPlayer1.getStatus());
      sleep(100);
      retries++;
      if (retries > 10) {
        fail("waited too long for media player to get READY");
      }   
    }   
    mediaView1 = find("#mediaView1");
    mediaView1.setMediaPlayer(mediaPlayer1);
    mediaPlayer1.play();
    retries = 0;
    while (mediaPlayer1.getStatus() != MediaPlayer.Status.PLAYING) {
      System.out
          .println("media player not yet PLAYING - current status: " + mediaPlayer1.getStatus());
      sleep(100);
      retries++;
      if (retries > 10) {
        fail("waited too long for media player to get PLAYING");
      }   
    }   
  }

И этот gitlab ci был необходим:

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 xserver-xorg-input-void xinit fonts-freefont-ttf pulseaudio pulseaudio-utils libavformat-ffmpeg56 wget libswt-gtk-3-java firefox -y
    - wget https://xpra.org/xorg.conf -O /etc/X11/xorg.conf
    - service dbus start
    - xinit -- :0 -nolisten tcp vt$XDG_VTNR -noreset +extension GLX +extension RANDR +extension RENDER +extension XFIXES &
    - DISPLAY=:0 pulseaudio --exit-idle-time=-1 &
    - DISPLAY=:0 mvn --batch-mode package
    - cd target && ls -la 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...