Testing Standards
Priority: P1 (HIGH)
Ensuring code reliability through multi-layered testing strategies.
Structure
text
test/ ├── unit/ # Business logic & mapping (Blocs, Repositories, UseCases) ├── widget/ # UI component behavior (Screens, Widgets) └── integration/ # End-to-end flows
Implementation Guidelines
- •Testing Pyramid: Maintain ~70% Unit Tests, ~20% Widget Tests, ~10% Integration Tests.
- •Mocks: Use
mocktailfor type-safe, boilerplate-free mocking. - •Unit Tests: Test logic in isolation. Verify all edge cases (Success, Failure, Exception).
- •Widget Tests: Test high-value interactions (Button clicks, Error states, Loading indicators).
- •BLoC Tests: Use
blocTestto verify state emission sequences. - •Code Coverage: Aim for 80%+ coverage on Domain and Presentation (Logic) layers.
Deep Dive References
- •Unit Testing Strategies (Test Data Builders, Mocktail)
- •Widget Testing Strategies (Robot Pattern)
- •Integration Testing (Shared Robots, Real Device)
- •Robot Pattern Implementation
🚫 Anti-Patterns
- •Thread Sleep:
**No Future.delayed**: Use FakeAsync or expectations for deterministic timing. - •Missing Assertions:
**No "Execution Only" Tests**: A test without an expect() call is invalid. - •Over-Mocking:
**No Mocking Data Classes**: Use real instances for Entities/Models; mock only I/O. - •Test Pollution:
**No Shared State**: Ensure every test is Independent (FIRST).
Related Topics
layer-based-clean-architecture | dependency-injection | cicd