Skip to content

Release v4.0.0

Choose a tag to compare

@woksin woksin released this 09 Jul 15:00
· 54 commits to main since this release
60ead51

Added

  • Seven Roslyn analyzers (CRSPEC0001–CRSPEC0007), bundled with Cratis.Specifications, Cratis.Specifications.XUnit and Cratis.Specifications.NUnit, that warn when:
    • a test method inside a specification is not named should_* (CRSPEC0001);
    • a file declares more than one specification (CRSPEC0002);
    • a [Fact]/[Test] is placed on a given context, where it never runs (CRSPEC0003);
    • a should_* method is missing its test attribute, so it never runs (CRSPEC0004);
    • a specification calls a base lifecycle method (base.Establish()/Because()/Destroy()) explicitly, running it twice (CRSPEC0005);
    • a specification that declares test methods is not public, so the runner skips it (CRSPEC0006);
    • the action under test (Because) is declared on a reusable given context (CRSPEC0007).
  • Both xUnit ([Fact]/[Theory]) and NUnit ([Test]/[TestCase]) test attributes are recognized.

Changed

  • The packages now target net8.0, net9.0 and net10.0, matching Arc and Chronicle.
  • Updated nunit to 4.6.1, Microsoft.NET.Test.Sdk to 18.7.0, and Microsoft.SourceLink.GitHub to 10.0.300.

Removed

  • Dropped the net48 target framework. Consumers on .NET Framework should remain on the previous release.

Fixed

  • The build workflow now installs the .NET 8/9/10 SDKs (it previously pinned an SDK that could not satisfy the repository's .NET 10 requirement) and runs the analyzer specs in CI.