Cheat sheet
Dense copy-paste reference for common AutoFixture v5 tasks.
Quick copy-paste snippets for everyday AutoFixture work. Assume:
var fixture = new Fixture();
Each block links to the full guide when you need more context.
Create
var number = fixture.Create<int>();
var text = fixture.Create<string>();
var dto = fixture.Create<ClientDto>();
var many = fixture.CreateMany<int>(5).ToList();
Seeded strings need AutoFixture.SeedExtensions:
var labeled = fixture.Create("Name"); // starts with "Name"
var items = fixture.CreateMany("Item", 3); // three prefixed strings
→ Fixture and Create · Seed extensions
Build (one object)
// Pin properties
var client = fixture.Build<ClientDto>()
.With(x => x.Name, "Ada")
.With(x => x.Age, 42)
.Create();
// Leave a property at its default
var sparse = fixture.Build<ClientDto>()
.Without(x => x.Age)
.Create();
// Skip all property assignment
var shell = fixture.Build<ClientDto>()
.OmitAutoProperties()
.Create();
// Mutate after construction
var trimmed = fixture.Build<ClientDto>()
.Do(x => x.Name = x.Name.Trim())
.Create();
Supply known values
fixture.Register(() => "fixed"); // factory for every request
var shared = fixture.Freeze<ClientDto>(); // create once, reuse
fixture.Inject(new ClientDto { Name = "x", Age = 1 }); // exact instance
| Method | When |
|---|---|
Register | You control how each request is built |
Freeze | AutoFixture creates it once; later requests on this fixture reuse it |
Inject | You already have the instance |
→ Register, Freeze, and Inject
Collections
var tags = fixture.Create<string[]>();
var scores = fixture.Create<List<int>>();
var five = fixture.CreateMany<int>(5).ToList();
var list = new List<ClientDto>();
fixture.AddManyTo(list); // uses RepeatCount
fixture.AddManyTo(list, 3); // exact count
var form = fixture.Build<TagBag>()
.With(x => x.Labels, fixture.CreateMany<string>().ToList())
.Create();
Customize the fixture
Per-type rules that apply to later Create calls:
fixture.Customize<ClientDto>(c => c.With(x => x.Age, 21));
fixture.Customize<ClientDto>(c => c.Without(x => x.Age));
fixture.Customize<ClientDto>(c => c.OmitAutoProperties());
Package customizations:
fixture.Customize(new AutoMoqCustomization());
fixture.Customize(new AutoMoqCustomization { ConfigureMembers = true });
fixture.Customize(new AutoNSubstituteCustomization());
fixture.Customize(new AutoFakeItEasyCustomization());
→ Customizations · Customizations catalog
Circular references
Default: throw. Omit the nested loop instead:
fixture.Behaviors
.OfType<ThrowingRecursionBehavior>()
.ToList()
.ForEach(b => fixture.Behaviors.Remove(b));
fixture.Behaviors.Add(new OmitOnRecursionBehavior());
→ Circular references · Behaviors
AutoData
[Theory, AutoData]
public void AutoData_FillsParameters(int n, string s, ClientDto dto) { }
[Theory]
[InlineAutoData("fixed")]
public void InlineAutoData_MixesExplicitAndGenerated(string first, string second) { }
[Theory, AutoData]
public void Frozen_SharesInstance([Frozen] string a, string b) { }
[Theory, AutoData]
public void Frozen_IntoInterface(
[Frozen(Matching.ImplementedInterfaces)] InMemoryOrderRepository repo,
OrderService sut) { }
Custom AutoData that includes AutoMoq:
public class AutoMoqDataAttribute : AutoDataAttribute
{
public AutoMoqDataAttribute()
: base(() => new Fixture().Customize(new AutoMoqCustomization())) { }
}
→ xUnit.net 3 · NUnit 4
Auto-mocking
// Moq — freeze Mock<T> for Verify
fixture.Customize(new AutoMoqCustomization());
var mock = fixture.Freeze<Mock<IOrderRepository>>();
var sut = fixture.Create<OrderService>();
// Moq — members return fixture values
fixture.Customize(new AutoMoqCustomization { ConfigureMembers = true });
// Moq — generic / skipped members
mock.Setup(m => m.Convert<double>("10")).ReturnsUsingFixture(fixture);
// NSubstitute / FakeItEasy — freeze the interface
fixture.Customize(new AutoNSubstituteCustomization());
var sub = fixture.Freeze<IOrderRepository>();
fixture.Customize(new AutoFakeItEasyCustomization());
var fake = fixture.Freeze<IOrderRepository>();
→ AutoMoq · AutoNSubstitute · AutoFakeItEasy
Task index
| I want to… | Go to |
|---|---|
Understand Create | Fixture and Create |
| Override properties | Build DSL |
| Share or pin instances | Register, Freeze, Inject |
| Fill lists / arrays | Collections |
| Honor data annotations | Data annotations |
| Fix circular graphs | Circular references |
| Prefix generated strings | Seed extensions |
Use [AutoData] | xUnit.net 3 / NUnit 4 |
| Mock interfaces | AutoMoq / AutoNSubstitute / AutoFakeItEasy |
| Guard-clause assertions | Idioms |
| Troubleshoot common errors | FAQ |
| See every NuGet package | Packages |
| Browse types | API reference |