Hi Stian,
Thanks for sharing this issue.
Running on an engine mode set to 'Run all tests automatically' WILL aggressively queue up tests covering projects that have changed, but NCrunch normally shouldn't build projects that haven't changed. There are three notable exceptions to this:
1. If you have tests or builds that reach out of NCrunch's workspace and modify files in the foreground solution. This is usually caused by
absolute file references. In some cases, this can even cause the engine to loop forever.
2. If you have the
copy referenced assemblies to workspace setting turned on for any of your projects, NCrunch will rebuild all projects dependent upon one that has changed. This can significantly increase the amount of background building necessary.
3. If you change the public surface of an assembly built from a project, for example, rename a public method or add a new class, this then changes the overall external 'signature' of an assembly and any projects referencing it must be rebuilt.
Note that you aren't limited to just the 'Run all tests automatically' and 'Run impacted tests automatically'. It's possible to
build your own engine mode and specify custom filters. For example, you might want to automatically run all tests that are normally fast executing or are tagged with a certain category, while running other tests only when they are marked as impacted.
It is also worth remembering that NCrunch is designed to use background/spare capacity on your machine to try and get you inline information. It's designed to churn, and though you can certainly target it more carefully, the idea is that you shouldn't need to care about how much it does churn. If you find the background work is slowing your system down, it may be worth adjusting your
max number of processing threads to reduce the resources used by the engine.