Infection is a PHP mutation testing framework based on Abstract Syntax Tree.
Composer
composer require --dev infection/infection
Config
It lives under the infection
namespace and has following configurable parameters:
# grumphp.yml
parameters:
tasks:
infection:
threads: ~
test_framework: ~
only_covered: false
configuration: ~
min_msi: ~
min_covered_msi: ~
mutators: []
ignore_patterns: []
triggered_by: [php]
threads
Default: null
If you want to run tests for mutated code in parallel, set this to something bigger than 1. It will dramatically speed up the mutation process. Please note that if your tests somehow depends on each other or use a database, this option can lead to failing tests which give many false-positives results.
test_framework
Default: null
This is the name of a test framework to use. Currently Infection supports PhpUnit
and PhpSpec
.
only_covered
Default: false
Run the mutation testing only for covered by tests files.
configuration
Default: null
The path or name to the infection configuration file.
min_msi
Default: null
This is a minimum threshold of Mutation Score Indicator (MSI) in percentage.
min_covered_msi
Default: null
This is a minimum threshold of Covered Code Mutation Score Indicator (MSI) in percentage.
mutators
Default: []
This is a list separated options to specify a particular set of mutators that needs to be executed.
ignore_patterns
Default: []
This is a list of patterns that will be ignored by Infection. With this option you can skip files like tests. Leave this option blank to run analysis for all 'triggered by' files.
triggered_by
Default: [php]
This option will specify which file extensions will trigger the infection task. By default infection will be triggered by altering a php file. You can overwrite this option to whatever file you want to use!