TestCommand class
Command to execute Flutter unit tests across the project and all modules.
This command provides comprehensive testing capabilities for modular Flutter projects, supporting selective testing of specific apps, features, or pages. It automatically generates bundle test files and handles coverage reporting.
Purpose:
- Execute unit tests across modular project structure
- Generate and manage bundle test files for efficient test execution
- Support selective testing by app, feature, or page
- Provide code coverage analysis and reporting
- Combine coverage data from multiple modules
Test Hierarchy:
Project
├── Apps (Optional)
│ └── Features
│ └── Pages
└── Features (Global)
└── Pages
Usage Examples:
# Run all tests
morpheme test
# Test specific feature
morpheme test --feature authentication
# Test specific page in feature
morpheme test --feature authentication --page login
# Run with coverage
morpheme test --coverage
# Custom reporter
morpheme test --reporter json --file-reporter json:reports/tests.json
Parameters:
--apps(-a): Target specific app for testing--feature(-f): Target specific feature for testing--page(-p): Target specific page for testing--coverage(-c): Enable code coverage reporting--reporter(-r): Set test result output format--file-reporter: Save test results to file
Bundle Test Generation:
The command automatically generates bundle_test.dart files that import
and execute all individual test files within a module, enabling efficient
batch test execution.
Coverage Integration: When coverage is enabled, the command collects LCOV data from all modules and combines it into a unified coverage report at the project root.
Exceptions:
- Throws
ValidationExceptionif invalid test targets are specified - Throws FileSystemException if test file operations fail
- Throws
TestExecutionExceptionif test runs fail
Constructors
Properties
-
aliases
→ List<
String> -
Alternate names for this command.
no setterinherited
- argParser → ArgParser
-
The argument parser for this command.
no setterinherited
- argResults → ArgResults?
-
The parsed argument results for this command.
no setterinherited
- category → String
-
The command's category.
no setteroverride
- description → String
-
A description of this command, included in usage.
no setteroverride
- globalResults → ArgResults?
-
The parsed global argument results.
no setterinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
-
Whether or not this command should be hidden from help listings.
no setterinherited
- invocation → String
-
A single-line template for how to invoke this command (e.g.
"pub getpackage").no setterinherited - name → String
-
The name of this command.
no setteroverride
- parent → Command?
-
The command's parent command, if this is a subcommand.
no setterinherited
- runner → CommandRunner?
-
The command runner for this command.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
subcommands
→ Map<
String, Command> -
An unmodifiable view of all sublevel commands of this command.
no setterinherited
-
suggestionAliases
→ List<
String> -
Alternate non-functional names for this command.
no setterinherited
- summary → String
-
A short description of this command, included in parent's
CommandRunner.usage.
no setterinherited
- takesArguments → bool
-
Whether or not this command takes positional arguments in addition to
options.
no setterinherited
- usage → String
-
Generates a string displaying usage information for this command.
no setterinherited
-
An optional footer for usage.
no setterinherited
Methods
-
addSubcommand(
Command command) → void -
Adds Command as a subcommand of this.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
printUsage(
) → void -
Prints the usage information for this command.
inherited
-
run(
) → void -
Runs this command.
override
-
toString(
) → String -
A string representation of this object.
inherited
-
usageException(
String message) → Never -
Throws a UsageException with
message.inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited