NCrunch 3.18 for Visual Studio 2008-2017
It intelligently runs automated tests so that you don’t have to, and gives you a huge amount of useful information about your tested code, such as code coverage and performance metrics, inline in your IDE while you type.
Automatic Concurrent Testing
A normal cycle of test driven development makes you stop to run your tests so often that it’s just plain painful. Think about the steps you usually go through:
Write the test
Stop and run the test
Write the code under test
Stop and run tests
Refactor the code under test
Stop and run tests
Drink some coffee and repeat
NCrunch takes away all the pain and leaves a warm happy feeling behind. So you end up with:
Write the test
Write the code under test
Refactor the code under test
Be happy, drink some coffee and repeat!
NCrunch collects test coverage for your code while it runs your tests.
This is shown next to your code in coloured markers showing which lines the tests touched, with marker colours indicating pass or fail status.
You can also navigate to any covering tests from any line of code, making it easy to see which tests you might impact with a change.
Full code coverage metrics are also available for your entire solution, allowing you to see where your code coverage is heavy and where it’s light.
NCrunch profiles your tests during their execution to pick up the execution time of every line of code under test.
Metrics are shown inline conveniently with a tooltip, and ‘hot spots’ are shown with special colouring on the code coverage markers.
Inline Exception Details
The stack traces of exceptions thrown from your tests are processed by NCrunch and projected over the code coverage markers.
This makes it really easy to spot where your tests went wrong, without the information getting in your way.
No matter where you are in your source code, you’ll be able to analyse problems quickly and without fuss.
Intelligent Test Execution
NCrunch tracks all sorts of interesting statistics about your tests, and it uses this information in the most intelligent way possible.
Tests that you have recently impacted with your code changes are highly prioritised for execution.
NCrunch uses a powerful weighting system designed to give you the most important feedback as fast as possible.
NCrunch can offload build and test work to other computers for processing.
Tasks are cleanly farmed out to any number of connected machines, forming grids to execute tests.
Grid servers can be shared between developers allowing teams to pool their resources.
Grids can even be scaled into the cloud to maximise testing throughput.
Distributed processing with NCrunch is highly effective, allowing concurrent execution of dozens or possibly even hundreds of tests at any one time.
—————————————————————– NEW FEATURES —————————————————————–
Added a detailed HTML timeline report to the console tool that dumps internal information around core load usage and the tasks being executed by the console tool over the run.
Removed the experimental toolbar button reordering on the tests window in favor of an extra button that lets you disable buttons on the toolbar to create more space.
Added a new project-level configuration setting, ‘Custom build properties’. This setting can be used to specify properties that NCrunch will pass into MSBuild when projects are built and loaded. This is a useful way to override build behaviour without needing to make changes to project files.
Added the ability to override the ‘TargetFramework’ and ‘TargetFrameworks’ build properties using the new ‘Custom build properties’ configuration setting.
Improved the command-line parser for the console tool so that it is now possible to inject more complex settings into the tool (such as GridServerReferences and CustomEnvironmentVariables).
Added a message to the TeamCity output that shows which grid node executed a test
Added a menu option to the Tests Window Toolbar to collapse and expand the tests in the tree.
Added a new optional column to the Tests Window for ‘Last Run/Build Date’. This is intended for manual execution scenarios where just knowing the time of the last execution isn’t enough, you actually need the date too.
—————————————————————– PERFORMANCE IMPROVEMENTS —————————————————————–
The console tool will now always set the ‘Fast Lane Threads’ setting to zero, even if this is specified in a configuration file. The only way to override this behaviour is to provide it to the tool using the command line.
Adjusted the grid node’s work request system so that when dealing with multiple client connections, the grid node will now request tasks from each client in larger chunks than previously. This should help to improve the ‘ramp up’ time associated with using shared nodes in high capacity grids.
Adjusted the prioritisation of build and analysis tasks so that when using a Pipeline Optimisation Priority of Throughput (the default setting for the console tool), these tasks will receive a 100x priority boost, ensuring they are executed above tests. This should resolve certain long-tail scenarios by allowing longer running tests to be kicked off earlier in the run.
—————————————————————– COMPATIBILITY IMPROVEMENTS —————————————————————–
Added a new system to resolve netcoreapp dependency data for NCrunch’s built-in assemblies. Previously, this was being handled purely through pre-compiled resources packaged with the NCrunch install files, which was creating dependency issues when working in some environments with newer versions of .NET Core (i.e. 2.1). NCrunch will now resolve its own dependency data dynamically in your own environment when it encounters a version of .NET Core that it doesn’t have dependency data for. This should improve stability in .NET Core test environments and also provides a level of forwards compatibility with future versions of .NET Core.
Fixed an issue where exceptions thrown inside the dispose methods of Xunit class fixtures were not being detected by NCrunch.
Changed the TeamCity integration in the console tool to report NCrunch Errors as build problems. This prevents potential problems from hiding unnoticed in the logs.
Changed the integration with TeamCity in the console tool to not report Explicit tests as ignored. Furthermore Explicit tests will no longer count in setting the exit status to TestsNotRun.
Adjusted the NCrunch project load system so that the ProjectName, AssemblyName and ProjectFileName properties will be set to the correct name of the project rather than the NCrunch temp file. This should help to enable better compatibility with customised build systems.
NCrunch will now capture output from NUnit3’s progress stream in the test’s trace output.
Disabled SourceLink when working under NCrunch to prevent the build from failing inside NCrunch workspaces.
Fixed MSTest async test methods broken in .NET Core 2.1.
Adjusted the rendering of coverage markers so that these are now aligned with the bottom of the line position, rather than the top. This should resolve issues with misaligned marker positions under some lines of code with CodeLens enabled.
Added support for MSTest’s DynamicData attribute. When the Framework Utilisation Type for MSTest is set to DynamicAnalysis, NCrunch will report dynamic data test cases individually as unique tests provided their parameter data is constructed using primitive types. When using StaticAnalysis or the parameter data contains complex types, NCrunch will collapse the test and report its results in aggregate form in the same manner as VSTest. Thus the experience when using this attribute under NCrunch can in many cases be a considerable improvement over VSTest or default MSTest.
—————————————————————– BUG FIXES AND MINOR ADJUSTMENTS —————————————————————–
Fixed an issue where NCrunch was not always correctly transferring the encoding for open non-code files in the IDE to remote grid nodes. This could result in noise errors being thrown up by remote nodes or files being corrupted when written to workspaces on remote nodes.
Renamed ‘Core Load’ to ‘Engine Core Load’ in the status icon tooltip window.
Adjusted the tooltip wording on the Reset button to give a better description of what this button does.
Adjusted the NCrunch grid node so that it stores its hash cache in a separate location to the console tool or VS plugin. This should help to resolve any issues with concurrent access to this file on machines that use both a grid node and the console tool (i.e. CI servers).
Fixed an issue where the target framework was not being correctly appended to a test’s name in the UI.
Fixed an issue where the columns in the test list popup window could not be resized.
Adjusted the test list popup to make it slightly more compact.
Fixed an issue that could cause NCrunch to crash the IDE in certain situations when the VS layout was reset with the Tests Window open (such as when attaching/detaching a debugger)
Fixed an issue where NCrunch was incorrectly caching context menu items between instances of the context menu. This could cause strange behaviour when working with tests in multi-targeted scenarios.
Fixed an issue where sometimes NCrunch would not correctly interpret new results for previously failing tests after churn mode was recently disabled.
Fixed text running off the edge of the corner popup window when working with grids using at least 100 task processors.
Adjusted the internal representation of the execution times and dates inside the Tests Window, so that these are now handled as TimeSpan and DateTime objects with formatted rendering, rather than just strings. This should improve the CSV export experience while also better enabling sorting on these fields.
Fixed noisy ‘Resetting ping’ log messages accidently released with v3.17.
NCrunch, tests, where, Fixed, build, console, using, Added, Adjusted, under, coverage, execution, should, issue, being, setting, report, Tests, information, resolve, NCrunch, tests, where, Fixed, build, console, under, using, Added, coverage, Adjusted, execution, issue, should, setting, being, report, information, resolve, properties