every_test 1.0.0 icon indicating copy to clipboard operation
every_test: ^1.0.0 copied to clipboard

Parametrized tests package to write your test one time and get multiple results just by giving a list of parameter values

Every Test #

Write and execute multiple combination of the same test with less code with every_test package.

Features #

  • Write unit test with various parameter values

  • Write golden tests with various finders and parameters

Getting started #

flutter pub add --dev every_test

Usage #

Simple unit test #

Start by calling everyTest method in any *_test.dart file

main() {
    everyTest(/***/);
}

Then give it a description

everyTest(
    'my first everyTest test',
    ...
);

Give it the test itself using parameter

...
'my first everyTest test',
of: (param) {
    final repository = SampleRepository();
    repository.values = param;
    return repository.average;
},
...    

Last but not least, give it the list of expected results depending on parameter using param(foo).gives(bar) syntax

...
of: (param) {
    ...
},
expects: [
    param([1, 2, 3]).gives(2),
],
...

Then add as many combination as wanted and voilà !

everyTest(
    'Expected average values computation',
    of: (param) {
        final repository = SampleRepository();
        repository.values = param;
        return repository.average;
    },
    expects: [
        param([1, 2, 3]).gives(2),
        param([4, 5, 6]).gives(5),
        param([7, 8, 9]).gives(8),
        param([9, 9, 9]).gives(9),
    ],
);

Using several parameters a time #

You may need to send multiple parameters for test execution. Just use Json syntax. That's it.

everyTest(
    'translation test',
    of: (params) {
      // GIVEN
      final locale = params['locale'];
      final key = params['key'];
      final repository = TranslationsRepository(currentLocale: locale);

      // WHEN
      return repository.translate(key);
    },
    expects: [
      // THEN
      param({'locale': 'en', 'key': 'app_name'}).gives('sample'), // en translation
      param({'locale': 'fr', 'key': 'app_name'}).gives('exemple'), // fr translation
      param({'locale': 'es', 'key': 'app_name'}).gives('sample'), // default translation
      param({'locale': 'en', 'key': 'hello'}).gives('!hello!'), // not found translation
    ],
  );

Golden tests #

 everyTestGolden(
    'every test golden',
    of: (tester, color) async {
      await tester.pumpWidget(MyApp(primarySwatch: color));
    },
    expects: [
      finder(find.byType(MyApp)).matches(Colors.blue, 'goldens/blue.png'),
      finder(find.byType(MyApp)).matches(Colors.red, 'goldens/red.png'),
      finder(find.byType(MyApp)).matches(Colors.green, 'goldens/green.png'),
    ],
  );
7
likes
130
pub points
0%
popularity

Publisher

unverified uploader

Parametrized tests package to write your test one time and get multiple results just by giving a list of parameter values

Repository (GitHub)
View/report issues

Documentation

API reference

License

Icon for licenses.BSD-3-Clause (LICENSE)

Dependencies

flutter, flutter_test, meta

More

Packages that depend on every_test