System.Spec
I am a big fan of TDD and when I first started doing it I was accustomed to using NUnit in C#. Then I started learning Ruby and fell in love in how they were doing TDD/BDD. The gem they use is called RSpec.
For a while I was jealous that we did not have something as cool in C#. There is NSpec, however for me if did not read that well.
So I decided to create System.Spec. We are currently using at the place I work at and we are really enjoying it. As we continue dogfooding this solution we will build more features into it.
An example specification looks like the following:
namespace YourCompany.Specs
{
using NSubstitute;
using System.Spec;
public class ImportantSpecification : Specification
{
protected override void Define()
{
Describe("A very cool specification", () => {
It("should do something that is good", () => {
var testInterface = Substitute.For<ITestInterface>();
testInterface.Received().TestMethod();
});
});
}
}
}
As you can see there is some C# ceremonies that we need to take into consideration, Ruby allows for a much cleaner syntax. It follows closely the design of Jasmine.
Moving Forward
- Add a runner for ReSharper
- Add a runner for VS 2010
- Add a runner for Xamarin Studio (if possible)
- Allow reordering of tests.
I urge you to look at the solution and if you have any thoughts or enhancements just yell out.
No comments:
Post a Comment