如何使用 Firebase 测试 Flutter 应用程序?
Posted
技术标签:
【中文标题】如何使用 Firebase 测试 Flutter 应用程序?【英文标题】:How to test a Flutter application using Firebase? 【发布时间】:2021-06-28 13:15:58 【问题描述】:我使用 Flutter 和 Firebase 作为我的数据库。我想对我的应用程序做一些单元测试,但是当我开始这个测试时:
testWidgets('MyWidget has a title and message', (WidgetTester tester) async
// Create the widget by telling the tester to build it.
await tester.pumpWidget(LoginPage());
expect(true, true);
);
我有例外:
没有创建 Firebase 应用“[DEFAULT]” - 调用 Firebase.initializeApp()
但 Firebase.initializeApp() 在我的 main.dart 中被调用:
Future<void> main() async
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
而且我不知道如何在我的测试中初始化 Firebase 应用。
【问题讨论】:
检查 this flutterfire doc,它显示了如何模拟和测试 Firebase 服务 【参考方案1】:根据@GuilhermeGabanelli 的评论将此作为社区 wiki 发布。
如果您查看this flutterfire documentation 了解如何使用 Firebase 服务执行单元测试,您会看到:
Firebase 库需要在实际设备或模拟器上运行。所以如果你想运行单元测试,你将不得不使用 Fakes。 Fake 是一个实现给定 Firebase 库的 API 并模拟其行为的库。
...
在初始化您的应用时,您不是传递 Firebase 库的实际实例(例如,如果使用 Firestore,则为 FirebaseFirestore.instance),而是传递一个假的实例(例如 FakeFirebaseFirestore())。然后您的应用程序的其余部分将像与 Firebase 对话一样运行。
后面是带有示例代码的示例。我相信这是您所面临问题的原因,如果您将代码更改为使用 Fakes,则应该解决此问题。
【讨论】:
以上是关于如何使用 Firebase 测试 Flutter 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何使 Android 和 iOS 的 Flutter App 崩溃(以测试 Firebase Crashlytics)?
如何在 Flutter 中设置不同的 firebase 环境
在 AWS Device Farm、Saucelabs、Firebase 测试实验室等中运行 Flutter 集成测试
如何在 Firebase 分析中跟踪 Flutter 屏幕?