Интеграционное тестирование Flutter и Gitlab CI / CD

Я пытаюсь настроить CI / CD для своего приложения Flutter с помощью Fastlane и GitLab на основе это руководство, однако у меня возникли некоторые трудности с автоматизацией интеграционных тестов Flutter с использованием драйвера Flutter. Проблема, с которой я сталкиваюсь, заключается в том, что после успешного завершения всех тестов экземпляр приложения продолжает работать (например, нет кода выхода), что означает, что на этапе Gitlab не выполняется никаких дополнительных скриптов. Например, когда тесты терпят неудачу, я получаю следующее сообщение:

Unhandled exception:
Dummy exception to set exit code.
Stopping application instance.
Driver tests failed: 255 

Я получаю код выхода 255, который, как я предполагаю, Gitlab Runner распознает как сбой и остановит выполнение следующих этапов (сборка и развертывание)?

Однако, если тесты проходят, все, что я получаю, это: 00:05 +3: All tests passed!, и кажется, что приложение все еще работает.

Я использую функцию tearDownAll, но она не помогает:

tearDownAll(() async {
      if (driver != null){
        await driver.close();
      }
    }); 

Добавление exit(0) или exit(255) в tearDownAll приводит к правильному закрытию экземпляра, однако теперь у меня есть способ прочитать, прошли ли тесты / не удалось, поэтому я могу установить код выхода как 0/255. Кто-нибудь имел дело с интеграционным тестированием и GitLab CI / CD раньше или сталкивался с подобной проблемой с Flutter Driver?


person Benjamin Smrdelj    schedule 29.09.2020    source источник


Ответы (1)


Я определил проблему - я просто использовал setUp() вместо setUpAll() в своих тестах. После изменения на

setUpAll(() async {
    driver = await FlutterDriver.connect();
});

тесты завершены успешно, и экземпляр приложения закрыт.

person Benjamin Smrdelj    schedule 30.09.2020