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[ ]minispecshould always exit0on 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 returnsfalse[ ]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 runSetUpandTearDownmethods before and after each run of a test case[ ]Determine and implement a nice way of supporting parameterized tests (DDT)[ ]Letdotnet runrun the tests if you invokeMiniSpec.Run()
Assertions & Expectations
[ ]Should work fine withxUnitandNUnitandFluentAssertionsassertions[ ]Extensibility so it’s easy to add your ownExpect()assertions[ ]Expect().ToEqual[ ]Expect().ToContain[ ]Expect().ToMatch[ ]Expect(() => { ... }).ToFail("Kaboom!")
Distribution
[ ]Expect()should be available on its own viaMiniSpec.Expect[ ]minispec.exeshould be available on its own viaMiniSpec.Console[ ]MiniSpecpackage should install both the library and the executable[ ]Make available via GitHub Packages[ ]Make available via MyGet[ ]Make available via NuGet