问题描述
我正在学习Flutter,我想为简单的 MyAppBarWidget 编写一个测试。下面是我的小部件
class MyAppBarWidget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("My first widget"),),));
}
}
我想测试小部件树的层次结构
- MaterialApp具有脚手架属性
- 脚手架具有AppBar属性
- AppBar的标题属性为文本
- 标题是我的第一个小工具
任何建议我应该写什么样的测试
我尝试了以下测试
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"));