抛出以下消息:当前测试运行期间检测到多个异常(2),并且至少有一个异常

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

在 flutter 中测试小部件。每次我都会遇到这个问题

我对引导小部件的方法有疑问 等待 tester.pumpWidget( UserDetails();

void main() {
  var emailField = find.byKey(Key("fname-field"));
  var passwordField = find.byKey(Key("lname-field"));
  var passwordField1 = find.byKey(Key("enumber-field"));
  var signInButton = find.text("SUBMIT");
  group("UserDetails  Screen test", () {
    testWidgets("Check the buttons in User screen",
        (WidgetTester tester) async {
      await tester.pumpWidget(  UserDetails()
      );
      await tester.pump();
      expect(emailField, findsOneWidget);
      expect(passwordField, findsOneWidget);
      expect(signInButton, findsOneWidget);
      expect(passwordField1, findsOneWidget);
    });
  });
}

这里我遇到了这样的错误

══╡ Flutter 测试框架捕获异常 ╞═══════════════════════════════════════ ══════════ ═══以下 抛出消息:在执行期间检测到多个异常 (2) 当前测试的运行,至少有一个是意外的。

附加到渲染时抛出以下 FirebaseException 树:[core/no-app] 未创建 Firebase 应用程序“[DEFAULT]” - 调用 Firebase.initializeApp()

android flutter dart testing widget
2个回答
0
投票

似乎您在页面被抽出之前就尝试找到小部件。

像这样更改范围:

void main() {
  group("UserDetails  Screen test", () {
    testWidgets("Check the buttons in User screen",
        (WidgetTester tester) async {
      await tester.pumpWidget(UserDetails());
      await tester.pumpAndSettle();
      await tester.pump();

      var emailField = find.byKey(Key("fname-field"));
      var passwordField = find.byKey(Key("lname-field"));
      var passwordField1 = find.byKey(Key("enumber-field"));
      var signInButton = find.text("SUBMIT");


      expect(emailField, findsOneWidget);
      expect(passwordField, findsOneWidget);
      expect(signInButton, findsOneWidget);
      expect(passwordField1, findsOneWidget);
    });
  });
}

0
投票

我认为这对你有用 将您的小部件包装到 MaterialAapp 和 Scaffold 有时,您的小部件层次结构需要来自脚手架和 MaterialApp 上下文的上下文大小。

void main() {
   var emailField = find.byKey(Key("fname-field"));
   var passwordField = find.byKey(Key("lname-field"));
   var passwordField1 = find.byKey(Key("enumber-field"));
   var signInButton = find.text("SUBMIT");
   group("UserDetails  Screen test", () {
       testWidgets("Check the buttons in User screen",
           (WidgetTester tester) async {
                await tester.pumpWidget(
                    MaterialApp(
                        home: Scaffold(
                            body: UserDetails(),
                        ),
                    ),
                );
                await tester.pump();
                expect(emailField, findsOneWidget);
                expect(passwordField, findsOneWidget);
                expect(signInButton, findsOneWidget);
                expect(passwordField1, findsOneWidget);
        });
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.