Professor X: For someone who hates mutants... you certainly keep some strange company.
William Stryker: Oh, they serve their purpose... as long as they can be controlled.
Note: this project is still very much in early development and (probably) not ready to reliably be used in large projects!
Despite that, we'd be happy to help you out if you run into any problems or have any questions 😁.
For an introduction to mutation testing and Stryker's features, see stryker-mutator.io. Looking for mutation testing in JavaScript or .NET?
For the quickstart, see our website's quickstart.
Stryker4s is a mutation testing framework for Scala. It allows you to test your tests by temporarily inserting bugs. Depending on your project setup, there are multiple ways to get started with Stryker4s.
Stryker4s provides a sbt plugin for easy use within sbt projects. To install the plugin, add the following line to plugins.sbt
:
addSbtPlugin("io.stryker-mutator" % "sbt-stryker4s" % "0.5.1")
After adding the plugin, Stryker4s can be used by running sbt stryker
in the root of your project.
Mutation testing can be very taxing on your computer's resources. After all, your tests are run for each mutant. Sbt also has the tendency to build up memory in a running session. It's wise to give sbt some extra memory by setting the following environment variable: export SBT_OPTS="-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=4G -Xmx4G"
. The amount of memory needed depends on the size of the project you are running Stryker4s on.
Multi-module projects are not yet fully supported. However, there is a workaround you can use while we work on a better solution. Set the base-directory to the correct directory of the submodule with the base-dir
configuration setting. Then you can run sbt "project yourSubmoduleNameHere" stryker
to set the active project and run Stryker4s.
The Maven plugin can be added as follows in pom.xml
under plugins
:
<plugin>
<groupId>io.stryker-mutator</groupId>
<artifactId>stryker4s-maven-plugin</artifactId>
<version>0.5.1</version>
</plugin>
You can then run Stryker4s with the command mvn stryker4s:run
. Note that this is different than the command for the sbt plugin.
We also publish SNAPSHOT versions of each commit on master. To use a pre-release, add the following setting to your plugins.sbt
:
resolvers += Resolver.sonatypeRepo("snapshots")
Then replace the Stryker4s version with this version: .
See CONFIGURATION.md for setting up your stryker4s.conf
file (optional).
Stryker4s supports a variety of mutators, which can be found in our handbook. Do you have a suggestion for a (new) mutator? Feel free to create an issue!
An always up-to-date reference is also available in the MutantMatcher source.
See the releases page for all the latest changes made.
Want to contribute? That's great! Please have a look at our contributing guide.