Upgrade 3 to 4

This is a work in progress. Please send a PR with any amendments.
Also see the 4.0 milestone.

Class constraint added to ShouldNotBeNull

In previous versions it was possible to assert that a non-nullable type ShouldNotBeNull, even though this logically makes no sense. For exmaple, the following would happily compile, but of course could never cause a test failure:
const long value = 1;
The class constraint was added to ShouldNotBeNull in v4, which means the above code will no longer compile. This is a good thing because it allows you to find and fix nonsensical tests in your codebase!

Func<string> customMessage removed

All overloads that accepted a Func<string> customMessage have been changed to string customMessage.

Diff tool functionality moved to DiffEngine

Diff tool functionality is now provided by DiffEngine.
As such, the following APIs have been removed:
  • Shouldly.Configuration.DiffTool
  • ShouldlyConfiguration.DiffTools
  • Shouldly.Configuration.IShouldNotLaunchDiffTool
  • Shouldly.Configuration.DiffToolConfiguration
  • Shouldly.Configuration.KnownDiffTools
  • Shouldly.Configuration.KnownDoNotLaunchStrategies