test_gen_ai 0.1.0 copy "test_gen_ai: ^0.1.0" to clipboard
test_gen_ai: ^0.1.0 copied to clipboard

An LLM-based test generation tool that generates Dart test cases for uncovered code using Google Gemini to improve code coverage.

example/example.dart

import 'package:test_gen_ai/test_gen_ai.dart';

Future<void> main() async {
  // change the packagePath and scopeOutput to your package
  final packagePath = '/home/user/code/yourPackage';
  final scopeOutput = 'yourPackage';
  final modelName = 'gemini-3-flash-preview';

  final coverage = await runTestsAndCollectCoverage(
    packagePath,
    scopeOutput: {scopeOutput},
  );
  final coverageByFile = await formatCoverage(coverage, packagePath);

  final declarations = await extractDeclarations(packagePath);

  final Map<String, List<Declaration>> declarationsByFile = {};
  for (final declaration in declarations) {
    declarationsByFile.putIfAbsent(declaration.path, () => []).add(declaration);
  }

  final untestedDeclarations = extractUntestedDeclarations(
    declarationsByFile,
    coverageByFile,
  );

  final model = GeminiModel(modelName: modelName);
  final testGenerator = TestGenerator(model: model, packagePath: packagePath);

  for (final (declaration, lines) in untestedDeclarations) {
    print('[testgen] Generating tests for ${declaration.name}');
    final toBeTestedCode = formatUntestedCode(declaration, lines);
    final contextMap = buildDependencyContext(declaration);
    final contextCode = formatContext(contextMap);

    final response = await testGenerator.generate(
      toBeTestedCode: toBeTestedCode,
      contextCode: contextCode,
      fileName:
          '${declaration.name}_${declaration.id}_${lines.length}_test.dart',
    );

    print(
      '[testgen] Finished generating tests for ${declaration.name} with '
      'status ${response.status} using ${response.tokens} tokens.',
    );
  }
}
2
likes
160
points
101
downloads

Publisher

unverified uploader

Weekly Downloads

An LLM-based test generation tool that generates Dart test cases for uncovered code using Google Gemini to improve code coverage.

Repository (GitHub)
View/report issues

Topics

#testing #code-coverage #gemini #llm #automation

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

analyzer, args, collection, coverage, google_generative_ai, logging, package_config, path, stack_trace, yaml

More

Packages that depend on test_gen_ai