我正在写一个Flutter整合测试,其中包括用
sqflite
打开数据库,代码如下:
import 'package:flutter_test/flutter_test.dart';
import 'package:our_habits/my_app.dart';
import 'package:sqflite/sqflite.dart';
void main() {
testWidgets("Test sqflite database", (WidgetTester tester) async {
print("start");
await tester.pumpWidget(const MyApp());
print("pumpWidget is done");
await openDatabase(
inMemoryDatabasePath,
version: 1,
onCreate: (Database db, int version) async {
}
);
print("end");
});
}
如您所见,代码非常简单。然而,它根本不起作用。我注意到
end
永远不会被打印,因为 openDatabase
永远不会完成。为什么?如何让它发挥作用?
您确定您正在编写集成测试吗?集成测试应位于 /tests/integration_test 文件夹中。当您将代码存储在其他文件夹中时,Flutter 不会创建完整的环境来运行测试。看https://docs.flutter.dev/cookbook/testing/integration/introduction