Mutation testing tool for Elixir
Mutix is a mutation testing tool that generates mutations of your source files and runs the existing test suite against them.
Generates a mutation report along with a mutation score as the result.
Add :mutix
to your test dependencies in your mix.exs
file:
def deps do
[
{:mutix, git: "https://github.com/tuomohopia/mutix.git", tag: "v0.1.1", only: [:dev, :test]}
]
end
Then add :test
as the preferred MIX_ENV
for the mix task of mutix
in your
mix.exs
file:
def project do
preferred_cli_env: [
mutate: :test
]
Or optionally
def cli do
[preferred_envs: [mutate: :test]]
end
The mix task takes a source file to mutate as the required parameter.
mix mutate lib/parser.ex
Run mix help mutate
to see instructions on how to use the tool.
--from
- which target operator to mutate--to
- which operator should the target operator be mutated to in the source file
If --from
and --to
are not defined, --from
defaults to +
and --to
to
-
.
mix mutate lib/parser.ex --from ">" --to "<"
mix mutate lib/parser.ex --from and --to not
The current version comes with the following caveats:
- Macros: Mutates operators even inside macros. This can lead to very confusing results
- Single source: Only mutates a single source file at a time. This is because producing mutations and running the test suite on each one of them is computationally expensive and this is not optimized yet