use_test_throws_matchers
Use throwsA matcher instead of fail().
Details
#Use the throwsA
matcher instead of try-catch with fail()
.
BAD:
dart
// sync code
try {
someSyncFunctionThatThrows();
fail('expected Error');
} on Error catch (error) {
expect(error.message, contains('some message'));
}
// async code
try {
await someAsyncFunctionThatThrows();
fail('expected Error');
} on Error catch (error) {
expect(error.message, contains('some message'));
}
GOOD:
dart
// sync code
expect(
() => someSyncFunctionThatThrows(),
throwsA(isA<Error>().having((Error error) => error.message, 'message', contains('some message'))),
);
// async code
await expectLater(
() => someAsyncFunctionThatThrows(),
throwsA(isA<Error>().having((Error error) => error.message, 'message', contains('some message'))),
);
Enable
#To enable the use_test_throws_matchers
rule, add use_test_throws_matchers
under linter > rules in your analysis_options.yaml
file:
analysis_options.yaml
yaml
linter:
rules:
- use_test_throws_matchers
If you're instead using the YAML map syntax to configure linter rules, add use_test_throws_matchers: true
under linter > rules:
analysis_options.yaml
yaml
linter:
rules:
use_test_throws_matchers: true
Unless stated otherwise, the documentation on this site reflects Dart 3.6.2. Page last updated on 2025-01-27. View source or report an issue.