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();

Build DSL

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
MethodWhen
RegisterYou control how each request is built
FreezeAutoFixture creates it once; later requests on this fixture reuse it
InjectYou 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();

Collections

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 CreateFixture and Create
Override propertiesBuild DSL
Share or pin instancesRegister, Freeze, Inject
Fill lists / arraysCollections
Honor data annotationsData annotations
Fix circular graphsCircular references
Prefix generated stringsSeed extensions
Use [AutoData]xUnit.net 3 / NUnit 4
Mock interfacesAutoMoq / AutoNSubstitute / AutoFakeItEasy
Guard-clause assertionsIdioms
Troubleshoot common errorsFAQ
See every NuGet packagePackages
Browse typesAPI reference