Hi, thanks for posting!
When you change your code, NCrunch will analyse the nature of the change and will rebuild the project that you changed. If the change was to any of the public interfaces of the project, then NCrunch will also build any projects that depend upon it. An exception to this is if you have turned on the 'Copy referenced assemblies to workspace' turned on for any of the projects in your solution - in which case these projects will almost always need to be rebuilt.
The running of your tests will depend upon the 'Engine mode' you've selected NCrunch to run in. There's more information about this
in the wiki, but when set to run tests automatically, NCrunch will run ALL tests that make use of a changed project regardless of whether the impact detection picked them up or not. The impact detection is used more as a way to prioritise the sequence in which the tests are run as opposed to selecting them for execution.
The reasoning behind this is quite simple - no impact detection is perfect. The tests held within your solution could have external dependencies well outside the knowledge of NCrunch and as such you can't be sure whether all your tests are truely passing until every one of them is executed.
Of course there is another way to approach this. If you were prepared to accept that there was still a slight chance that a test could fail without the continuous test runner identifying the need for it to be run, then it is possible to run only the impacted tests and reduce the amount of work that needs to be done. NCrunch doesn't do this yet, but it is a high priority feature that will be added very soon.
Cheers,
Remco