minimal_test 0.0.7
minimal_test: ^0.0.7 copied to clipboard
Minimalist library for testing Dart VM scripts using null-safety features. Has no external dependencies other than Dart SDK >=2.9.0.
Minimal Test #
A minimalist library for writing simple tests. Using this package introduces no further dependencies other than Dart SDK >= 2.9.0. Aimed at testing Dart VM scripts using null-safety.
For features like test-shuffling, restricting tests to certain platforms, stream-matchers, complex asynchronous tests, it is recommended to use the official package test.
Note: In the context of this package, the functions group and test are merely used to organize and label tests and test-groups.
Each call to expect is counted as a test. A test run will complete successfully if all expect-tests are passed and none of the test files
exits abnormally.
Usage #
The library provides the functions:
group: Used to label a group of tests. The argumentbody, a function returningvoidorFutureOr<void>, usually contains one or several calls totest.test: The body of this function usually contains one or several calls toexpect.setUpAll: A callback that is run before thebodyoftest.tearDownAll: A callback that is run after thebodyoftesthas finished.expect: Compares two objects. An expect-test is considered passed if the two objects match. (Matching should be understood as a form of lax equality test. For example two lists match if their entries match.)
import 'package:minimal_test/minimal_test.dart';
class A {
A(this.msg);
final String msg;
@override
String toString() {
return 'A: $msg';
}
}
bool isEqualA(left, right){
if (left is! A || right is! A) return false;
return left.msg == right.msg;
}
late A a1;
late A a1_copy;
late A a2;
void main() {
setUpAll(() {
a1 = A('a1');
a1_copy = a1;
a2 = A('a2');
a3 = A('a1');
});
group('Group of tests', () {
test('Comparing copies', () {
expect(a1, a1_copy); // Pass.
});
test('Comparing different objects', () {
expect(a1, a2); // Fail.
});
test('Using custom matcher function.', () {
expect(a1, a3, isEqual: isEqualA); // Pass.
});
});
}
The script bin\minimal_test.dart attempts to find test-files specified
by the user. If no path is provided, the progam will scan the folder test.
It then attempts to run each test-file and generate a report by inspecting
the process stdout, stderr, and exit codes.
To run the tests in the test folder, navigate to the package root and use:
$ pub run --enable-experiment=non-nullable minimal_test:minimal_test.dart
Alternatively, the path to a test file or test directory may be specified:
$ pub run --enable-experiment=non-nullable minimal_test:minimal_test.dart
test/src/class_a_test.dart
Show console output.
Limitations #
To keep the library as simple as possible, test files are not parsed and there is no provision to generate and inspect a node-structure of test-groups and tests. As such, shuffling of tests is not supported.
While it is possible to run asynchronous tests, it is recommended
to await the completion of the objects being tested before issuing a call to
group, test, and expect.
Otherwise, the output printed by the method expect might not
occur on the right line making it difficult to read the test output.
However, the total number of failed/passed tests
is reported correctly.
File async_test.dart shows how to test
the result of a future calculation.
Features and bugs #
Please file feature requests and bugs at the issue tracker.