NCrunch v2.17 is now available. This release contains several important fixes and compatibility improvements to keep NCrunch working with recent changes in the .NET ecosystem, along with some new goodies.
NUnit V3 Support
The biggest feature of v2.17 is a new test framework adapter targeted to support NUnit version 3. Right now, NUnit V3 is in an advanced beta state, due to enter RC status very soon. One of the biggest changes in NUnit V3 is the introduction of a new API for test runners (such as NCrunch) to interact with the framework without needing to dance through NUnit internals.
In the long term, this will be great for maintaining a stable integration point between NCrunch and NUnit, with new versions of either product being freely updatable without the other product needing to move in lock-step. Unfortunately, this did involve a complete rewrite of NCrunch's NUnit adapter from scratch.
To keep things stable for NUnit v2, NCrunch will continue to use the tried and tested legacy adapter for this version of NUnit. This means you'll only be using the new adapter if you choose to upgrade to NUnit v3.
License Server Upgrades
v2.17 includes several changes and fixes in response to user feedback on the new NCrunch license server. I hope these changes will help further simplify the management of NCrunch licenses, especially on larger sites. The changes include:
- Several stability fixes
- The ability to export licenses and lease data to CSV
- An option to override the 'Unique ID' field specified in the NCrunch client, and use the user's login name instead (great for sites using Active Directory!)
- The ability to blacklist/whitelist users through a range of different conditions
Simplified Multi-Platform Testing Using Distributed Processing
In its initial design, NCrunch's distributed processing was intended to allow people to scale the engine outwards onto multiple machines to increase overall capacity. However, even in its early stages of development, it became very obvious that there was huge potential to use this feature for testing software using different platforms and configurations concurrently. After all, if you have a grid made up of different machines running different operating systems and configurations, wouldn't this be a great way to make sure your software works correctly in these different environments?
The main problem with multi-platform testing is that the NCrunch engine needs special handling to consider it. Imagine you have a test targeting a use case that you want to run on every platform in the grid. By default, NCrunch will only ever run this test on the first available machine. The only way to make sure the use case is reliably tested on every platform has been to create multiple tests (one for each platform), and mark them using NCrunch.Framework.RequiresCapabilityAttribute so they only run on the nodes they're intended to.
Obviously, this is a huge burden for large test suites that require multi-platform testing. So in response to user feedback, we now have a clean solution to this!
NCrunch v2.17 introduces a new attribute, NCrunch.Framework.DistributeByCapabilitiesAttribute. When applied to a test, fixture, or assembly, this attribute will clone all applicable tests according to its supplied capability parameters, with each clone targeted to run on a different platform. This means you can now easily split your tests to run them across the grid, or even the entire test suite with very little effort required.
When NCrunch detects this attribute, you'll see the clones of this test showing in the NCrunch Tests Window, each with its own special suffix.
This new attribute opens up the NCrunch engine to all kinds of new distributed compatibility testing... All inline, tracked, and continuous.
And There's More!
NCrunch also includes a range of other fixes and compatibility improvements intended to make life easier and less frustrating. But don't take my word for it - go take it for a spin! Or check out the full list of changes.