MSpec is called a "context/specification" test framework because of the "grammar" that is used in describing and coding the tests or "specs". The grammar reads roughly like this:
When the system is in such a state, and a certain action occurs, it should do such-and-such or be in some end state.
You should be able to see the components of the traditional Arrange-Act-Assert model in there. To support readability
and remove as much "noise" as possible, MSpec eschews the traditional attribute-on-method model of test construction.
Instead it uses custom delegates that you assign anonymous methods, and asks you to name them following a certain convention.
usingMachine.Specifications;[Subject("Authentication")]classWhen_authenticating_an_admin_user{staticSecurityServicesubject;staticUserTokenuser_token;Establishcontext=()=>subject=newSecurityService();Becauseof=()=>user_token=subject.Authenticate("username","password");Itshould_indicate_the_users_role=()=>user_token.Role.ShouldEqual(Roles.Admin);Itshould_have_a_unique_session_id=()=>user_token.SessionId.ShouldNotBeNull();}- Create a .NET Framework or .NET Core library project.
- Install Nuget packages as follows:
Install-Package Machine.Specifications- Install the test SDK and Visual Studio runner:
Install-Package Microsoft.NET.Test.SDK
Install-Package Machine.Specifications.Runner.VisualStudio- Optionally, install the assert and mocking libraries:
Install-Package Machine.Specifications.Should
Install-Package Machine.FakesFor project documentation, please visit the wiki.
A PluralSight course by @kevinkuebler is available here.
Discuss with us on Discussions, or raise an issue.