Testing Skill
This skill defines how to write effective, meaningful Flutter and Dart tests.
1. Test Validity
Before writing or accepting a test, ask:
"Can this test actually fail if the real code is broken?"
- Avoid tests that only confirm mocked/fake behavior that doesn't reflect real logic.
- Avoid tests that confirm behavior guaranteed by the language, the standard library, or trivially obvious code that cannot fail unless the environment is broken.
- Every test should be capable of catching a real regression.
2. Structure
Always use group() in test files — even when there is only one test. Name the group after the class under test:
group('Counter', () {
test('value should start at 0', () {
final counter = Counter();
expect(counter.value, 0);
});
});
3. Naming
Name test cases using "should" to clearly describe the expected behavior:
test('should emit updated list when item is added', () { ... });
test('should throw ArgumentError when input is negative', () { ... });