---
title: Cheat sheet
description: Dense copy-paste reference for common AutoFixture v5 tasks.
---

Quick copy-paste snippets for everyday AutoFixture work. Assume:

```csharp
var fixture = new Fixture();
```

Each block links to the full guide when you need more context.

## Create

```csharp
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**:

```csharp
var labeled = fixture.Create("Name");          // starts with "Name"
var items = fixture.CreateMany("Item", 3);     // three prefixed strings
```

→ [Fixture and Create](/docs/fundamentals/fixture-and-create) · [Seed extensions](/docs/extensions/seed-extensions)

## Build (one object)

```csharp
// 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](/docs/fundamentals/build-dsl)

## Supply known values

```csharp
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](/docs/how-to/register-freeze-inject)

## Collections

```csharp
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](/docs/how-to/collections)

## Customize the fixture

Per-type rules that apply to later `Create` calls:

```csharp
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:

```csharp
fixture.Customize(new AutoMoqCustomization());
fixture.Customize(new AutoMoqCustomization { ConfigureMembers = true });
fixture.Customize(new AutoNSubstituteCustomization());
fixture.Customize(new AutoFakeItEasyCustomization());
```

→ [Customizations](/docs/fundamentals/customizations) · [Customizations catalog](/docs/fundamentals/customizations-catalog)

## Circular references

Default: throw. Omit the nested loop instead:

```csharp
fixture.Behaviors
    .OfType<ThrowingRecursionBehavior>()
    .ToList()
    .ForEach(b => fixture.Behaviors.Remove(b));
fixture.Behaviors.Add(new OmitOnRecursionBehavior());
```

→ [Circular references](/docs/how-to/circular-refs) · [Behaviors](/docs/fundamentals/behaviors)

## AutoData

```csharp
[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:

```csharp
public class AutoMoqDataAttribute : AutoDataAttribute
{
    public AutoMoqDataAttribute()
        : base(() => new Fixture().Customize(new AutoMoqCustomization())) { }
}
```

→ [xUnit.net 3](/docs/integrations/xunit3) · [NUnit 4](/docs/integrations/nunit4)

## Auto-mocking

```csharp
// 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](/docs/integrations/automoq) · [AutoNSubstitute](/docs/integrations/autonsubstitute) · [AutoFakeItEasy](/docs/integrations/autofakeiteasy)

## Task index

| I want to… | Go to |
| --- | --- |
| Understand `Create` | [Fixture and Create](/docs/fundamentals/fixture-and-create) |
| Override properties | [Build DSL](/docs/fundamentals/build-dsl) |
| Share or pin instances | [Register, Freeze, Inject](/docs/how-to/register-freeze-inject) |
| Fill lists / arrays | [Collections](/docs/how-to/collections) |
| Honor data annotations | [Data annotations](/docs/how-to/data-annotations) |
| Fix circular graphs | [Circular references](/docs/how-to/circular-refs) |
| Prefix generated strings | [Seed extensions](/docs/extensions/seed-extensions) |
| Use `[AutoData]` | [xUnit.net 3](/docs/integrations/xunit3) / [NUnit 4](/docs/integrations/nunit4) |
| Mock interfaces | [AutoMoq](/docs/integrations/automoq) / [AutoNSubstitute](/docs/integrations/autonsubstitute) / [AutoFakeItEasy](/docs/integrations/autofakeiteasy) |
| Guard-clause assertions | [Idioms](/docs/extensions/idioms) |
| Troubleshoot common errors | [FAQ](/docs/reference/faq) |
| See every NuGet package | [Packages](/docs/reference/packages) |
| Browse types | [API reference](/docs/reference/api-reference) |
