Skip to main content

use_test_throws_matchers

Learn about the use_test_throws_matchers linter rule.

Stable

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