Project Description
Write maintainable unit tests, faster.
AutoFixture makes it easier for developers to do Test-Driven Development by automating non-relevant Test Fixture Setup, allowing the Test Developer to focus on the essentials of each test case.
Overview
(Jump straight to the
CheatSheet if you just want to see some code samples right away.)
AutoFixture is designed to make Test-Driven Development more productive. It does so by removing the need for hand-coding anonymous variables as part of a test's Fixture Setup phase. Among other features, it offers a generic implementation of the
Test Data Builder pattern.
When writing unit tests, you typically need to create some objects that represent the initial state of the test. Often, an API will force you to specify much more data than you really care about, so you frequently end up creating objects that has no influence on the test, simply to make the code compile.
AutoFixture can help by creating such
Anonymous Variables for you. Here's a simple example:
[TestMethod]
public void IntroductoryTest()
{
// Fixture setup
Fixture fixture = new Fixture();
int expectedNumber = fixture.CreateAnonymous<int>();
MyClass sut = fixture.CreateAnonymous<MyClass>();
// Exercise system
int result = sut.Echo(expectedNumber);
// Verify outcome
Assert.AreEqual<int>(expectedNumber, result, "Echo");
// Teardown
}
This example illustrates the basic principle of AutoFixture: It can create values of virtually any type without the need for you to explicitly define which values should be used. The number
expectedNumber is created by a call to CreateAnonymous<T> - this will create a 'nice', regular integer value, saving you the effort of explicitly coming up with one.
The example also illustrates how AutoFixture can be used as a
SUT Factory that creates the actual System Under Test (the MyClass instance).
Using AutoFixture is as easy as referencing the library and creating a new instance of the Fixture class!
Resources
CheatSheetFAQRead more on
ploeh blog.