use_test_throws_matchers

Group: style

Maturity: stable

Dart SDK: >= 2.14.0 • (Linter v1.5.0)

Since info is static, may be stale

View all Lint Rules

Using the Linter

Use the throwsA matcher instead of try-catch with fail().

BAD:

// 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:

// 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'))),
);

Usage

To enable the use_test_throws_matchers lint, add use_test_throws_matchers under linter > rules in your analysis_options.yaml file:

linter:
  rules:
    - use_test_throws_matchers