Flutter 集成测试和 Gitlab CI/CD
Flutter integration testing and Gitlab CI/CD
我正在尝试使用基于 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)
确实可以正确关闭实例,但是我现在可以读取 if tests passed/failed 所以我可以将退出代码设置为 0 /255。有没有人处理过集成测试和 GitLab CI/CD 之前或遇到过与 Flutter Driver 类似的问题?
我已经确定了问题 - 我只是在测试中使用 setUp()
而不是 setUpAll()
。改成
后
setUpAll(() async {
driver = await FlutterDriver.connect();
});
测试已成功完成,应用程序实例已关闭。
我正在尝试使用基于 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)
确实可以正确关闭实例,但是我现在可以读取 if tests passed/failed 所以我可以将退出代码设置为 0 /255。有没有人处理过集成测试和 GitLab CI/CD 之前或遇到过与 Flutter Driver 类似的问题?
我已经确定了问题 - 我只是在测试中使用 setUp()
而不是 setUpAll()
。改成
setUpAll(() async {
driver = await FlutterDriver.connect();
});
测试已成功完成,应用程序实例已关闭。