Currently, I'm running about 4000 tests, the vast majority of which are unit tests. At present, it may take 60-80 minutes to run my entire suite of tests.
I have a NCrunch file for global configuration that I commit to SCM, and pass on the command line. I copied it from my local, and modified some things to suit.
<GlobalConfiguration>
<Settings>
<AllowParallelTestExecution>True</AllowParallelTestExecution>
<CPUCoresAssignedToNCrunch>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21</CPUCoresAssignedToNCrunch>
<FastLaneThreads>0</FastLaneThreads>
<GridServerReferencesForComputer>
<Value>spf-xifttest2:41141>ECuh5ERVQz3tzh6joFgEMKTP1Vr5+FtusoAVeCk+rAM=</Value>
</GridServerReferencesForComputer>
<MaxNumberOfProcessingThreads>8</MaxNumberOfProcessingThreads>
<MaxTestRunnerProcessesToPool>1</MaxTestRunnerProcessesToPool>
<RdiStorageSettings>Path=C:\NCrunch\RDIStorage</RdiStorageSettings>
<SystemConfigured>True</SystemConfigured>
<TerminateTestRunnerTasksOnExecutionComplete>False</TerminateTestRunnerTasksOnExecutionComplete>
<UseSimplifiedSettingsWhereAvailable>False</UseSimplifiedSettingsWhereAvailable>
<WizardAllowParallelTestExecution>True</WizardAllowParallelTestExecution>
<WizardEnableRdi>True</WizardEnableRdi>
<WizardEngineMode>Run all tests automatically</WizardEngineMode>
<WizardIgnoreTests>True</WizardIgnoreTests>
</Settings>
<EngineModes>
<EngineMode>
<Name>Run all tests automatically</Name>
<Settings>
<EngineModeColor>a255, r0, g128, b25</EngineModeColor>
</Settings>
</EngineMode>
<EngineMode>
<Name>Run all tests manually</Name>
<Settings>
<EngineModeColor>a255, r255, g0, b0</EngineModeColor>
<TestsToExecuteAutomatically>False</TestsToExecuteAutomatically>
</Settings>
</EngineMode>
<EngineMode>
<Name>Run impacted tests automatically, others manually</Name>
<Settings>
<AlignOutOfDateStatusWithImpactStatus>True</AlignOutOfDateStatusWithImpactStatus>
<EngineModeColor>a255, r128, g128, b0</EngineModeColor>
<TestsToExecuteAutomatically>IsImpacted</TestsToExecuteAutomatically>
</Settings>
</EngineMode>
<EngineMode>
<Name>Run pinned tests automatically, others manually</Name>
<Settings>
<AutoPinNewTests>True</AutoPinNewTests>
<EngineModeColor>a255, r0, g0, b255</EngineModeColor>
<TestsToExecuteAutomatically>IsPinned</TestsToExecuteAutomatically>
</Settings>
</EngineMode>
</EngineModes>
</GlobalConfiguration>I've also committed to SCM shared NCrunch solution and project configuration files. I store ignored tests in the shared project configuration.
On a high level, my question boils down to: how do I best configure my test run on my build server so that my entire suite finishes as quickly as possible. Which is to say: the default base case for using NCrunch is as an IDE extension, to provide as much visual feedback to the user as possible; so, how much of this can be safely configured to not be done in the CI scenario, and how? More specifically:
[list=1]