Hello,
Couple of suggestions based on working with a solution containing just over 2000 ignored tests and around 500 non-ignored where I'm selectively un-ignoring new tests and some legacy tests. I normally do not like having a single test ignored, but this 5 year old testing library is not suited for continuous testing so for the time being the bulk of it can only be run after a manual setup.
Firstly, it's bit difficult to see failing tests when the NCrunch Tests tree is full of ignored tests. My first suggestion therefore would either be a feature to allow grouping by state (failed, passed, etc) or simply displaying all failed tests first, then do the normal display of passed / ignored. [Of course, you can hide ignored tests, but this leads to suggestion two about unignoring things enmass]
Secondly, if you consider other unit testing runners (using Resharper as an example here), they often allow actions at the class level. So Resharper, adds an adornment next to class names in the code window which allows me to run or debug all tests in that class. It would be helpful if NCrunch had a similar option, especially in regards to ignoring or un-ignoring an entire class. I could of course do that from the NCrunch Tests window, but then I have to find the class first, generally using the search box (as you can't type a class name into the tree without fully qualifying it) and this is quite a large project with a lot of classes. If I could ignore/unignore entire classes directly from the code pane I'd be less inclined to have Ignored Tests enabled in NCrunch Tests, and therefore negating the first suggestion :)
While I'm writing this post, I might as well mention another frustration I've been having recently.
Another unit test library I have (again developed before NCrunch) is one that tests integration between a system installer and OS features. It involves creating and configuring (literally) hundreds of virtual directories in IIS, several dozen database creations (and some restorations), and then a bunch of COM/COM+ actions for legacy software. Should I inadvertently change something that triggers NCrunch to retest everything, I'm left with a slooooow system for upwards of 30 mins while they are reran. [And yes, I'd like to replace the guts of a lot of these tests to use mocking but as usual time constraints say no].
To cut the ramble short, I'd like to see an easier way of knowing exactly what test is currently being run. Again going back to Resharper (I use NCrunch for continuous testing but when debugging failing tests I tend to stick with Resharper's runner) when you run tests with that, you can see exactly which test is being run. I can't find this information readily in NCrunch - it has a processing queue, but it doesn't seem to help with "actually" running, only "pending". Or maybe I'm just missing something, wouldn't be the first time!
With that said, NCrunch is now one of my must have tools, it virtually forces me to write tests as I can see the results RIGHT NOW instead of whenever I can be bothered to click a run button. So many thanks for creating it!
Regards;
Richard Moss
Edited 27 Jun 2013 09:05 UTC