Flutter 集成测试和 Gitlab CI/CD

Posted

技术标签:

【中文标题】Flutter 集成测试和 Gitlab CI/CD【英文标题】:Flutter integration testing and Gitlab CI/CD 【发布时间】:2021-01-15 05:28:35 【问题描述】:

我正在尝试使用基于 this tutorial 的 Fastlane 和 GitLab 为我的 Flutter 应用程序设置 CI/CD,但是我在使用 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();
      
    ); 

tearDownAll 中添加exit(0)exit(255) 确实可以正确关闭实例,但是我现在可以读取测试是否通过/失败,因此我可以将退出代码设置为0/255。有没有人处理过集成测试和 GitLab CI/CD,或者遇到过 Flutter Driver 的类似问题?

【问题讨论】:

【参考方案1】:

我发现了问题 - 我只是在测试中使用 setUp() 而不是 setUpAll()。改成之后

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

测试成功完成,应用实例关闭。

【讨论】:

以上是关于Flutter 集成测试和 Gitlab CI/CD的主要内容,如果未能解决你的问题,请参考以下文章

在 gitlab 管道中执行 testcontainer 集成测试

Gitlab CI 持续集成的完整实践

持续集成之④:GitLab触发jenkins构建项目

gitlab + jenkins 持续集成

Docker--结合 Jenkins + Gitlab 完成自动化测试的持续集成实战

drone 集成gitlab 配置以及简单测试