Provides a unified and simple interface that emphasizes the smallest amount of boiler plate code possible.
Each test is marked using Test attribute. A test is a type derived from TestBase. It can run for several ticks, maintaining state using member variables. Your logic has to be ran through step methods.
Each test specifies to which TestSuite it belongs. Suites provide additional API for controlling the execution environment (for all tests which are part of a suite).
Within the framework a SINGLE class derived from TestHarness can exist. TestHarness is collection of all available test suites. It runs tests in them and provides API to access them.
Step methods
You can name your step methods however you like.
They have to be annotated with TestStep attribute that specifies TestStage to which this step belongs.
Stages
They divide the steps into groups that express the initialization and finalization process.
Under normal circumstances (no failure or error occurs), stages are executed in following order: