Hi Remco, found NCrunch just this week and very impressed. We have a very large solution (60 projects of various sizes) and while it has definitey decreased stability in visual studio, it is very useful when it works. I'm definitely hoping to get more of our 20-odd developers to use it once it crashes less often.
At the moment I find the best idea for me is to do a 'reset' when I leave the office in the evening and manually update unit tests for code that I change through the next day (by clicking on the icon and running all unit tests for that area). I've done all the balancing that I think will help (cpu core-wise) but I still can't run it alongside my normal processes.
If you have an easy way to get stats (number of tests, lines of code, project count, pc info, etc) that might be of interest to you then let me know and I can provide stats on what we work with.
Unfortunately since 80%+ of our tests rely on a database in a specific state each time, we are unable to use the parallelisation to get better performance. I don't really know how much better things would be with this enabled, but I am considering a method of having multiple unit test database instances, and a 'smart' selector which will pick one that is not currently in use. There still could be problems, but it's novel and if it allows us to do some test in parallel, that would be pretty handy.
Another thing we have that is moderately interesting is one of our tests that interrogates all the assemblies in the solution for conformity (ie the Company Name/details, versions etc) which doesn't seem to work unless I set the 'Copy References to Workspace' flag on the unit tests configuration. I am wary of this though because it seems to be a bit extreme to need to build so often, but I'm not sure.
In order to set up the solution to work well with NCrunch, I ended up adding a setting to the configuration of one of my projects for detecting whether it was running in NCrunch mode as thus:
Code:
<PropertyGroup Condition="$(NCrunch) == '1'">
<DefineConstants>TRACE;DEBUG;NCRUNCH</DefineConstants>
</PropertyGroup>
I was wondering though whether there was anything we could save when checking our code changes into SVN to do with the coverage results. Obviously it would save us a lot by having the results up to date whenever we pulled the latest changs from source control, rather than needing to regenerate the entire set. Is this something available? I have seen all the xml configuration files for each project, but they didn't seem to contain any acutal source coverage information. I could always search a bit deeper (process monitor, disassembly, etc) but would rather not need to. I didn't notice anything on the wiki about this either.
That's about all right now. Looking forward to any enhancements/updates. Happy to put some time in if I can help push your code along too, esp stability and performance.
Fellow kiwi here too by the way, been here in Scotland for a couple of years. Was pleased when a workmate felt it was interesting enough to point out you were one, heh.
Cheers,
Max