- Overview
- Guides
- Concepts
- Considerations And Constraints
- Absolute File References
- Assembly Colocation Assumptions
- Concurrent Use Of Test Resources
- Cross Application Domain Testing
- Heavily Executed Code Under Test
- Implicit File Dependencies
- Multi Threaded Tests
- Netstandard Test Projects
- Project Atomicity
- Project Build Platform And Configuration
- Rdi Data Point Location
- Test Atomicity
- Unique Test Names
- Using NCrunch With Source Control
- Reference
- Global Configuration
- Overview
- Auto Adjust Clashing Marker Colours
- Build Log Verbosity
- Build Process Memory Limit
- Capabilities Of This Computer
- Coverage Marker Style
- Cpu Cores Assigned To NCrunch Or Ide
- Custom Environment Variables
- Disable Global Hotkey
- Engine Hosting Strategy
- Fast Lane Threads
- Fast Lane Threshold
- Grid Maximum Reconnection Attempts
- Grid Reconnection Delay
- Impact Detection Mode
- Listening Port
- Log To Output Window
- Logging Verbosity
- Marker Colours
- Max Failing Test Trace Log Size
- Max Number Of Processing Threads
- Max Passing Test Trace Log Size
- Max Test Runners To Pool
- NCrunch Tool Window Colors
- Node Id (Name)
- Password
- Performance Aggregation Type
- Performance Display Sensitivity
- Pipeline Optimisation Priority
- Rdi Storage Settings
- Sliding Build Delay
- Snapshot Storage Directory
- Solution Storage Data Limit
- Spinner Colours
- Terminate Test Runners On Complete
- Test Process Memory Limit
- Tests To Execute On This Machine
- Text Output Font
- Workspace Base Path
- Solution Configuration
- Overview
- Additional Files For Grid Processing
- Additional Files To Include
- Allow Parallel Test Execution
- Allow Tests In Parallel With Themselves
- Infer Project References Using Assembly
- Instrumentation Mode
- NCrunch Cache Storage Path
- Only Consider Tests Outofdate If Impacted
- Project Config File Storage Path
- Show Coverage For Tests
- Show Metrics For Tests
- Tests To Execute Automatically
- Project Configuration
- Overview
- Additional Files To Include
- Allow Dynamic Code Contract Checks
- Allow Static Code Contract Checks
- Analyse Line Execution Times
- Autodetect Nuget Build Dependencies
- Build Priority
- Build Process Cpu Architecture
- Build Sdk
- Collect Control Flow During Execution
- Consider Inconclusive Tests As Passing
- Copied Project Dependencies
- Copy Referenced Assemblies To Workspace
- Custom Build Properties
- Data Storage File Size
- Default Test Timeout
- Detect Stack Overflow
- Enable Rdi
- Files Excluded From Auto Build
- Framework Utilisation Types
- Ignore This Component Completely
- Implicit Project Dependencies
- Include Static References In Workspace
- Instrument Output Assembly
- Method Data Limit
- Ms Test Thread Apartment State
- Preload Assembly References
- Prevent Signing Of Assembly
- Proxy Process File Path
- Rdi Cache Size
- Required Capabilities
- Restrict Tostring Usage
- Run Pre Or Post Build Events
- String Length Limit
- Track File Dependencies
- Use Build Configuration
- Use Build Platform
- Use Cpu Architecture
- Runtime Framework
- Overview
- Atomic Attribute
- Category Attribute
- Collect Control Flow Attribute
- Distribute By Capabilities
- Duplicate By Dimensions
- Enable Rdi Attribute
- Environment Class
- Exclusively Uses Attribute
- Inclusively Uses Attribute
- Isolated Attribute
- Method Data Limit Attribute
- Requires Capability Attribute
- Restrict Tostring Attribute
- Serial Attribute
- String Length Limit Attribute
- Timeout Attribute
- Uses Threads Attribute
- Global Configuration
- Troubleshooting
- Tools
- Keyboard Shortcuts
- Manual Installation Instructions
Capabilities
Capabilities serve to allow you to specify restrictions on which grid nodes can be used for executing specific tests or builds. This concept applies only when using NCrunch's distributed processing and has no relevance when using only the local machine to run tests.
A common problem when setting up distributed processing for a complex solution is that some of the solution's projects or tests may have very specific infrastructure needs. For example, a solution may contain a Windows Store project (which can only be built using Windows 8.1 or above), or contain tests that make use of a local database not configurable on all nodes within the grid. Capabilities allow you to inform NCrunch on what individual grid nodes are capable of so that the engine will not attempt to use them for tasks they would fail to correctly process.
Capabilities are essentially nothing more than simple strings that are cross-checked between tasks and grid nodes. This means you can name them however you like, as long as this naming is consistent across the grid.
Using capabilities, it's possible to configure NCrunch to avoid building certain projects or running certain tests on the client machine hosting your IDE. This can be very useful for allowing developers to do work on projects that require specialised SDKs or infrastructure in order to be built, as this work can be delegated to grid nodes that are able to handle it.
Using DistributeByCapabilitiesAttribute, it is possible to use capabilities to duplicate the execution of tests across different machines in the grid, enabling fast and simple multi-platform testing of applications.
Node/Client Configuration
The capabilities of a grid node can be specified in a global context using the capabilities of this computer configuration setting, accessible in the grid node configuration tool. By default, a machine will not have any capabilities specified.
Because the grid client (the NCrunch IDE plugin) is also a task processor, it can have capabilities specified using the same global setting, which can be found inside the NCrunch Configuration Window inside Visual Studio.
Project Required Capabilities
When capabilities are assigned to a project, any machine not configured with the same capability will not attempt to build the project. You can assign capabilities to projects using the Required Capabilities configuration setting.
Test Required Capabilities
When capabilities are assigned to tests, any machine not configured with the same capability will not attempt to execute the test. These capabilities can be assigned at test, fixture, or assembly level using the RequiresCapabilityAttribute.