sqflite 的 `openDatabase` 永远不会在测试中结束

问题描述 投票:0回答:1

我正在写一个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
永远不会完成。为什么?如何让它发挥作用?

flutter sqlite testing flutter-test sqflite
1个回答
0
投票

您确定您正在编写集成测试吗?集成测试应位于 /tests/integration_test 文件夹中。当您将代码存储在其他文件夹中时,Flutter 不会创建完整的环境来运行测试。看https://docs.flutter.dev/cookbook/testing/integration/introduction

© www.soinside.com 2019 - 2024. All rights reserved.