com um clique
dart-add-unit-test
// Write and organize unit tests for functions, methods, and classes using `package:test`. Use when creating new logic or fixing bugs to ensure code remains correct and regression-free.
// Write and organize unit tests for functions, methods, and classes using `package:test`. Use when creating new logic or fixing bugs to ensure code remains correct and regression-free.
| name | dart-add-unit-test |
| description | Write and organize unit tests for functions, methods, and classes using `package:test`. Use when creating new logic or fixing bugs to ensure code remains correct and regression-free. |
| metadata | {"model":"models/gemini-3.1-pro-preview","last_modified":"Fri, 24 Apr 2026 15:07:58 GMT"} |
Organize test files to mirror the lib directory structure to maintain predictability.
test directory at the root of the package._test.dart to the end of all test file names (e.g., lib/src/utils.dart should be tested in test/src/utils_test.dart).integration_test directory at the root of the package.Utilize package:test as the standard testing library for Dart applications.
package:test/test.dart (or package:flutter_test/flutter_test.dart for Flutter).group() function to provide shared context.test() function.expect() function alongside matchers (e.g., equals(), isTrue, throwsA()).async/await syntax. The test runner automatically waits for the Future to complete.setUp() and tearDown() callbacks.package:mockito alongside package:test to generate mock objects, configure fixed scenarios, and verify interactions.Select the appropriate test runner based on the project type and test location.
dart test command.flutter test command.dart test integration_test or flutter test integration_test.Follow this sequential workflow when implementing new test suites. Copy the checklist to track your progress.
test/ directory, ensuring the _test.dart suffix.package:test/test.dart and the target library.main() function.setUp().test() cases grouped by functionality using group().Demonstrates grouping, setup, synchronous, and asynchronous testing.
import 'package:test/test.dart';
import 'package:my_package/calculator.dart';
void main() {
group('Calculator', () {
late Calculator calc;
setUp(() {
calc = Calculator();
});
test('adds two numbers correctly', () {
expect(calc.add(2, 3), equals(5));
});
test('handles asynchronous operations', () async {
final result = await calc.fetchRemoteValue();
expect(result, isNotNull);
expect(result, greaterThan(0));
});
});
}
Demonstrates configuring a mock object for dependency injection testing.
import 'package:test/test.dart';
import 'package:mockito/mockito.dart';
import 'package:mockito/annotations.dart';
import 'package:my_package/api_client.dart';
import 'package:my_package/data_service.dart';
// Generate the mock using build_runner: dart run build_runner build
@GenerateNiceMocks([MockSpec<ApiClient>()])
import 'data_service_test.mocks.dart';
void main() {
group('DataService', () {
late MockApiClient mockApiClient;
late DataService dataService;
setUp(() {
mockApiClient = MockApiClient();
dataService = DataService(apiClient: mockApiClient);
});
test('returns parsed data on successful API call', () async {
// Configure the mock
when(mockApiClient.get('/data')).thenAnswer((_) async => '{"id": 1}');
// Execute the system under test
final result = await dataService.fetchData();
// Verify outcomes and interactions
expect(result.id, equals(1));
verify(mockApiClient.get('/data')).called(1);
});
});
}
Replace the usage of `expect` and similar functions from `package:matcher` to `package:checks` equivalents.
Entrypoint structure, exit codes, cross-platform scripts. Use when building command line utilities, scripts, or applications.
Collect coverage using the coverage packge and create an LCOV report
Uses get_runtime_errors and lsp to fetch an active stack trace, locate the failing line, apply a fix, and verify resolution via hot_reload.
Define and generate mock objects for external dependencies using `package:mockito` and `build_runner`. Use when unit testing classes that depend on complex external services like APIs or databases.
Workflow for fixing package version conflicts. Use this when `pub get` fails due to incompatible package versions.