我有 2 个小部件
1 在assert
其build
方法中:
class MyWidget1 extends StatelessWidget {
const MyWidget1({super.key});
@override
Widget build(BuildContext context) {
assert(false);
return const Placeholder();
}
}
1.assert
在按钮的回调中:
class MyWidget2 extends StatelessWidget {
const MyWidget2({super.key});
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () {
assert(false);
},
child: const Text('button'),
);
}
}
我想要一个测试来验证是否assert
抛出了。从这个问题开始,我尝试了:
void main() {
testWidgets('It should throw an assert error during the build',
(WidgetTester tester) async {
await expectLater(
() => tester.pumpWidget(const MaterialApp(home: MyWidget1())),
throwsA(isA<AssertionError>()),
);
});
testWidgets('It should throw an assert error on tap',
(WidgetTester tester) async {
await tester.pumpWidget(const MaterialApp(
home: Scaffold(
body: MyWidget2(),
),
));
await expectLater(
() async {
await tester.tap(find.byType(TextButton));
await tester.pumpAndSettle();
},
throwsAssertionError,
);
});
}
但错误并没有被预期捕获。
如何测试?
您可以使用
FlutterError.onError
: