如何编写小部件树测试以验证树层次结构

问题描述

我正在学习Flutter,我想为简单的 MyAppBarWidget 编写一个测试。下面是我的小部件

class MyAppBarWidget extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: Text("My first widget"),),));
  }
}

我想测试小部件树的层次结构

任何建议我应该写什么样的测试

我尝试了以下测试

void main() {
  testWidgets("verify app bar",(WidgetTester tester) async {
    await tester.pumpWidget(MyAppBarWidget());
    var byWidget = find.byType(MaterialApp);
    var text = find.text("My first widget");
    expect(byWidget,findsOneWidget);
    expect(text,findsOneWidget);
  });
}

但是此测试并未说明我的文本字段位于AppBar小部件内

有人可以帮助我该如何编写测试以验证这一点?

谢谢

解决方法

我建议不要测试窗口小部件层次结构,您将经常对其进行更改,并且始终必须调整测试,而在测试失败或成功时却不知道任何事情。最好测试功能,是否有东西,点击事件和交互。

您还可以查看金色(屏幕截图)测试,以确保屏幕或页面不会发生变化。

话虽如此,如果您真的想这样做,可以使用

find.ancestor(find.byType(AppBar),find.text("My first widget"));