- Use `testWidgets()` for widget tests with `WidgetTester` — pump frames with `tester.pumpAndSettle()` after state changes.
- Place tests in `test/` directory mirroring `lib/` structure. Name files `*_test.dart`.
- Use `setUp()` and `tearDown()` for test fixtures — use `mockito` package with `@GenerateMocks` for dependency mocking.
- Use `find.byType()`, `find.text()`, `find.byKey()` for locating widgets in tests.
- Use `mockito` or `mocktail` for mocking dependencies. Annotate with `@GenerateMocks`.
- Use `pumpWidget()` to render, `pump()` to advance frames, `pumpAndSettle()` to wait for animations.
- Use `group()` to organize related tests. Use `setUp()` and `tearDown()` for lifecycle.