Introducing Stryker.NET and Stryker4s
Published: 27 September 2018
As you might know, both C# and Scala run on entirely different platforms compared to Stryker (which runs on NodeJS). This is the main reason we decided to implement them as separate frameworks. Stryker.NET is written in C# and runs as a .NET Core application, while Stryker4s is written in Scala and runs on the JVM (Java Virtual Machine). As of now, a version of Stryker.NET can be found on nuget.org, the package manager for the .NET platform. In due time, Stryker4s can be found on Maven Central.
Thanks to them both for their hard work and continued support.
As you might have noticed, we've redesigned our website. It is focussed to help you get started on the platform of choice.
- Get started with Stryker.NET (preview)
- Get started with Stryker4s (preview)
One design mentality
Although all 3 versions of Stryker are implemented on different platforms, the design goals are the same. It should be easy to use and fast to run. Without compromises.
We wanted to offer the same quality to the .NET and Scala counterparts, but they have one additional problem: compiling code takes a long time. It would dramatically reduce the performance of the frameworks. This is why we chose to implement a new mutation testing technique we call Mutation Switching. With this technique, we compile only once. This results in a drastic performance gain, without compromising the quality of the mutations. It really deserves it's own blog post, so more on that later.
Though the 3 frameworks have their own code base, there are actually a lot of points on which we're planning to collaborate.
- One vocabulary
Terms like mutant, survived and mutator will mean the same across platforms. We will even share the names for the mutators, see the supported mutators in our handbook for a comprehensive list of supported mutators.
- One website
We'll keep things together with one website. This will help visibility for all platforms and keep things simple for our users.
- One html reporter
We're redesigning our html report as HTML 5 web components. It really is it's own thing and might even be used for other mutation testing frameworks out there. Interested to help? Please let us know! Github repository here.
- One dashboard
We're planning on supporting our mutation testing dashboard for all 3 implementations.
What about good old Stryker?