Skip to content

0.15.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@sdcondon sdcondon released this 15 Feb 19:11
· 120 commits to main since this release

Almost certainly the last pre-release before v1.0.0 (which almost certainly will have very few changes of its own).
Not a huge number of changes that a user would notice, but quite a bit under the covers:

  • Added a (very brief) README to the packages
  • Resolved most of the TODOs in the code:
    • Slightly improved stack traces in failure results & fixed an awkward throw new Exception occurrence when an implicit assertion fails (e.g. when using ThenThrows(ex => ...) but no exception is thrown).
    • Improved error message when an unexpected exception is thrown by a "When" clause
    • Localisation basics - most string hard-coding replaced by resources in a resource file. Should I ever be lucky enough that it becomes an issue, localisation should be relatively straightforward.
    • A bit more (probably unneeded, but easy and good practice) robustness in TestRun class in the VSTest adapter - in case of bad test runner behaviour
    • (Quickly looked into parallelisation of test discovery in VSTest adapter, but decided against it)
  • Reviewed abstractions for flexibility & stability
    • Tweaked the ITraitProvider interface to make it a little more flexible
    • Changed Trait to ITrait. Might be overkill, but meh
    • Replaced Description property of ITestCase & IAssertion with IFormattable interface inheritance. Admittedly a bit of a calculated risk. IFormattable may be needlessly complex (not sure format strings for these will be useful*). However, a Description prop is almost certainly not going to be flexible enough for the amount of control I want to offer, so I think this is a slightly better bet for a stable abstraction. I did briefly consider if it should still have a Description prop, but it should be an IFormattable not a string, but iI think that would be overly complex compared to just inheriting IFormattable directly.

Worth noting a couple of things not included in the packages at all have also been done alongside this stuff:

  • Added very basic performance benchmark (not yet invoked as part of validation build)
  • A number documentation improvements

* then again, in a test where e.g. we're summing two numbers (so have two int-valued pre-reqs), being able to do something like specify a @x + @y format string (e.g. in .UsingConfiguration(c => c.ResultFormat = "{0} for test case {1:@x + @y}")) might be nice?