NCrunch 1.38b Released!

by Remco 7. March 2012 06:29

It's a little earlier than I planned it, but NCrunch 1.38b is now stable and ready for release!

Before going into detail on all the good stuff in this release, I first want to say that I originally hoped to put much more in it.  My original plans put the release date around this middle of this month, which would have made room for a few extra features and compatibility improvements.  Unfortunately 1.37b contained a performance problem that was affecting a large number of people, and with the release of the VS11 Beta last week it made sense to bring 1.38b forward.  Silverlight support is something I also still hope to get to very soon.

So! What does 1.38b have to offer that's special? Let's take a look ...


Custom Engine Modes

NCrunch now allows you to create your own custom engine modes on a per-solution basis.  The customised engine modes can control which tests are automatically queued for execution, using very configurable criteria.  This makes it possible for you to create different engine modes for your solution that suit your working style at the time.  For example, you may have an engine mode designed to automatically run all tests in the solution except for those that have a category of 'Integration'.  You could then have a different engine mode that would run all tests provided their name matches a regular expression, or they have been impacted by changes made to the codebase.  This is a very powerful feature, opening the door to using NCrunch as a 'partially continuous' test runner.

The ability to customise engine modes makes some interesting changes to the way that NCrunch can be used.  Up until now, the normal way to handle heavy-weight or resource intensive integration tests has been to ignore them using NCrunch or to keep NCrunch out of the 'Run all tests automatically' mode.  A cleaner approach to this is now possible, as you can create your own category to adorn these tests then instruct NCrunch never to run them automatically.  This means you can have all the advantages of continuous unit test execution while still retaining the ability to run integration tests manually with inline code coverage and performance analysis on-demand.


Recognition of Impacted Test Analysis

Since its first public release, NCrunch has had the ability to analyse changes that are made to a codebase and identify tests that are impacted with these changes.  Up until now, this impact status has been mostly invisible with the impacted tests simply sitting in the processing queue with a higher priority.

NCrunch 1.38b contains several changes in this area to make the concept of an impacted test more visible and meaningful.  You'll notice that impacted tests are now shown with a little 'i' in the Tests Window.

The 'Impacted' status flag can also form part of the criteria in customising engine modes, and as such a new pre-configured engine mode has been introduced: 'Run impacted tests automatically, others manually'.



As NCrunch's impact analysis is still fairly rudimentary, this new engine mode is highly experimental and to be used at your own risk.  Regardless of how sophisticated a tool's impact analysis is, it will never be perfect and this can result in tests not being run when they should be.  Still, this can be useful if you're looking for a more resource-friendly approach to continuous testing with a lower certainty of overall test results.  I'm interested in hearing more feedback about this impact analysis to help me determine if this is an area NCrunch should be further extended towards.

The impacted status of tests is now also saved to NCrunch's cache file between instances of Visual Studio or during an engine reset.  This means the NCrunch engine should feel much more responsive shortly after it is enabled as it will have more information with which to make prioritisation decisions.


Corner Indicator

By popular demand, NCrunch now has a corner indicator that gives information about the workings of the engine while the system is enabled.  This should help reduce the reliance on big clunky dockable windows and generally give a cleaner feel to the crunching experience.

The new indicator is designed to try and show the maximum amount of useful information possible in the smallest possible space.  This information is as follows:

  • The letter/number in the middle gives the 'most relevant' metric at the current point in time.  If a build is in progress, this will show 'B'.  If NCrunch is starting up and loading projects, this will show the number of projects that still need to be loaded (count down!).  If a build failure exists, this will show the number of projects failing to build.  If test failures exist, this will show the number of tests currently failing.  If tests are queued for execution, this will show you how many tests are still in the queue.
  • The shade of the above letter/number is also used.  If it is faded, this means that the results being shown are not up to date and may not be accurate (for example, if a test recently failed but changes to the codebase may have fixed it).
  • The colour of the outer circle gives context to the metric shown.  If build failures exist, the outer circle will be orange.  If test failures exist, it will be red.  If all is well, it will be green.
  • The white spinners on the outer circle represent tasks that are being executed by NCrunch.  This means that if you have 5 sets of tests all running in parallel, then you'll see 5 spinners.


VS11 Beta Support

NCrunch 1.38b introduces full support for the recently released Visual Studio 11 Beta.  I'm not sure if there's much more to say here :)


Fixes and Compatibility Improvements

This version of NCrunch also brings with it another batch of fixes and compatibility improvements for many of the problems reported in 1.37b.  Worthy of note is a fix for a serious performance problem that was affecting a large number of people.  Overall, 1.38b is faster, more stable and more reliable than any NCrunch version before it (if this isn't the case, please do let me know!).


Anyway, that's enough nattering from me.  Go grab yourself the new build!


Comments (8) -

Remco Mulder
Remco Mulder New Zealand
3/7/2012 1:15:28 PM #

For anyone that was quick on the draw with grabbing this version ( and had a problem with a System.ArgumentException during build, try grabbing 1.38 again.  I've updated it with a revision that should sort this problem out.  Apologies for any problems this might have caused!

irium Russia
3/8/2012 12:37:12 AM #

Great!! Running impacted tests only and informative indicator is what I was missing in NCrunch! This is greatly improves readability.
Honestly, NCrunch is the greatest tool for Visual Studio .NET development since ReSharper!!! As for long years I can't imagine myself without ReSharper, so I'm pretty sure very soon many developers wouldn't imagine themselves without NCrunch!!

Dusan Janosik
Dusan Janosik Czech Republic
3/8/2012 1:08:04 AM #

Unfortunately, the "Enable NCrunch" menu item is grayed-out in VS11b.

Remco Mulder
Remco Mulder New Zealand
3/9/2012 4:51:06 PM #

Hi Dusan - The first revision of 1.38 that was released had this issue for small projects that were not opened directly from explorer.  I've updated the revision on the download page to include a fix for this, so hopefully the issue should be resolved for you now if you want to try redownloading and reinstalling.

Jan Denmark
3/13/2012 8:04:08 AM #

This is the greatest extension for my VS2010 I have downloaded so far!

I really feel much inclined to actually concentrate my focus on writing tests after I installed it.

Thanks for a great product!

Marcel Bradea
Marcel Bradea Canada
3/14/2012 10:18:17 AM #

"NCrunch is the greatest tool for Visual Studio .NET development since ReSharper!!!"

>> I couldn't of said it better. NCrunch has been fundamentally changing my development style and I noticed I haven't touched a traditional unit test runner in over a week of development. I get 90% of the info I need from NCrunch and only need to run tests manually when I need to step through and "debug" my tests to see specific values at runtime. The immediacy of the feedback is changing my dev cycle and TDD at its core. Thank you for this incredible contribution to programming guys. Keep doing what you're doing!   =)

PS: The new corner indicator rocks. I love that you guys are placing a focus on UX. It makes a big diff.

Justin United States
4/24/2012 4:18:13 AM #

Awesome tool! Been using it for about an hour now and it's already saved me 10 minutes (time I can take to say 'Thank you' and type more code!) Something that impressed me right off the bat was that I *did* load this right up and run it against a multi-man-year solution just to see what this baby could do. Well, one of my builds failed (to be expected) so after consulting your trouble shooting page the problem turned out to be a 'lost reference' (i.e. pulling in an assembly from the project build folder rather than my library path). Did I say this was awesome?

Andrew South Africa
4/26/2012 7:15:45 PM #

Hi Remco,

I just had to drop you a comment to let you know how absolutely amazing I think NCrunch is .  I read about it on Scott Hanselmans must have tools list and tried it out immediately.  Since then all the guys I work with have started using it and are loving what it can do.

Awesome stuff!

Comments are closed

Month List