Planning Phase

Brainstorm Features

What do we want our wonderful new test framework to provide?

This is my personal braindump of ideas - come up with your own ideas at home!

Command-Line Interface

  • [ ] Output should show pretty colors
  • [ ] minispec should always exit 0 on success or non-zero on failure
  • [ ] minispec --version - Print out the current version of minispec
  • [ ] minispec -l/--list - Print out test names instead of running them
  • [ ] minispec -m/--match [Test Name Matcher] - Run a subset of the tests
  • [ ] minispec -v/--verbose - Print output from every test, even passing ones
  • [ ] minispec -q/--quiet - Don’t print anything, exit 0 on success or exit 1 on failure
  • [ ] minispec -n/--no-local - Don’t consider local functions when searching for tests
  • [ ] minispec -p/--pattern - Provide a custom pattern used to find test methods
  • [ ] minispec -s/--setup - Provide a custom pattern used to find setup methods
  • [ ] minispec -t/--teardown - Provide a custom pattern used to find teardown methods
  • [ ] minispec -f/--formatter - Name of output reporter formatter to use, e.g. TAP
  • [ ] minispec -d/--dll - Provide a custom pattern used to auto-find DLLs
  • [ ] minispec -c/--config - Provide a text Config file (default .minispec)

Syntax DSL (Domain-Specific Language)

  • [ ] Support DLLS which need to load dependencies, including if there are conflicts
  • [ ] Support failing if a Test method with a bool return type returns false
  • [ ] Support running instance methods
  • [ ] Invoke parent method(s) before invoking test function (if local function)
  • [ ] Allow for some local functions within a test function not to be run (use _ prefix)
  • [ ] Detect and run SetUp and TearDown methods before and after each run of a test case
  • [ ] Determine and implement a nice way of supporting parameterized tests (DDT)
  • [ ] Let dotnet run run the tests if you invoke MiniSpec.Run()

Assertions & Expectations

  • [ ] Should work fine with xUnit and NUnit and FluentAssertions assertions
  • [ ] Extensibility so it’s easy to add your own Expect() assertions
  • [ ] Expect().ToEqual
  • [ ] Expect().ToContain
  • [ ] Expect().ToMatch
  • [ ] Expect(() => { ... }).ToFail("Kaboom!")

Distribution

  • [ ] Expect() should be available on its own via MiniSpec.Expect
  • [ ] minispec.exe should be available on its own via MiniSpec.Console
  • [ ] MiniSpec package should install both the library and the executable
  • [ ] Make available via GitHub Packages
  • [ ] Make available via MyGet
  • [ ] Make available via NuGet