API v1 checking… · p50 — · 0 installs/hr
v0.1.0
NuGet
View on GitHub
Cysharp

RandomFixtureKit

New
58 0

Fill random/edge-case value to target type for unit testing.

Install via NuGet

NuGet package

Add via NuGetForUnity (recommended for Unity), a <PackageReference> in your .csproj, or the dotnet CLI. Click Install for the full instructions.

id RandomFixtureKit
Targets netstandard2.0 · Unity-compatible · Updated Apr 28, 2026
Install 0
nuget.org

README

Rendered from GitHub

GitHub Actions Releases

RandomFixtureKit

Fill random/edge-case value to target type for unit testing, supports both .NET Standard and Unity. This lib is similar as AutoFixture but has some different things.

image

NuGet: RandomFixtureKit

Install-Package RandomFixturekit

Unity: releases/RandomFixtureKit.unitypackage

or package.json exists on src/RandomFixtureKit.Unity/Assets/Scripts/RandomFixtureKit for unity package manager.

Table of Contents

How to use

// get single value
var value = FixtureFactory.Create<Foo>();

// get array
var values = FixtureFactory.CreateMany<Bar>();

// get temporal value(you can use this values to use invoke target method)
var (x, y, z) = FixtureFactory.Create<(int, string, short)>();

In the default, all fill values are random(and not includes null). This behaviour is configure by IGeneratorResolver resolver overload.

// default is NotNull resolver, the value is completely random
var value1 = FixtureFactory.Create<int>(resolver: StandardResolver.NotNull);

// you can change the EdgeCaseResolver, 
var value2 = FixtureFactory.Create<int>(resolver: StandardResolver.EdgeCase);

// you can change the default resolver.
FixtureFactory.Default = StandardResolver.EdgeCase;

// or make the new you combine resolver.
// this configuration uses string => fill Japanese Hiragana and others as NonNullResolver
var resolver = new CompositeResolver(new[] {
        new JapaneseHiraganaGenerator(stringLength:9),
    }, new[] {
        StandardResolver.NonNull
    });

// for fill interface type, need to map before call create
FixtureFactory.RegisterMap<IFoo, Foo>();
var v = FixtureFactory.Create<IFoo>(); // return Foo object

image

edge-case, for example int is filled int.MinValue, int.MaxValue, 0, -1 or 1. collection(array, list, etc...) is filled null, zero-elements, one-elements, nine-elements.

Custom Generator

Implement IGenerator and setup composite-resolver, you can control how generate values.

// for example, increment Id on create MyClass value.
public class MyClass
{
    public int Id { get; set; }
    public int Age { get; set; }
    public string Name { get; set; }

    public override string ToString()
    {
        return (Id, Age, Name).ToString();
    }
}

// Create IGenerator.
public class MyClassSequentialIdGenerator : IGenerator
{
    int sequence = 0;
    IGenerator fallbackGenerator = new Int32Generator();

    // this generator called if requires int value.
    public Type Type => typeof(int);

    public object Generate(in GenerationContext context)
    {
        // check target int field belongs MyClass.
        if (context.FieldInfo != null)
        {
            // auto-implemented property's field: <Id>k__BackingField
            if (context.FieldInfo.DeclaringType == typeof(MyClass) && context.FieldInfo.Name.StartsWith("<Id>"))
            {
                return (sequence++);
            }
        }

        return fallbackGenerator.Generate(context);
    }
}

// setup generator to use
var resolver = new CompositeResolver(new[] { new MyClassSequentialIdGenerator() }, new[] { StandardResolver.NonNull });
var fixture = new Fixture(resolver); // fixture is instance version of FixtureFactory

var foo = fixture.CreateMany<MyClass>(100);
foreach (var item in foo)
{
    Console.WriteLine(item);
}

Author Info

This library is mainly developed by Yoshifumi Kawai(a.k.a. neuecc).
He is the CEO/CTO of Cysharp which is a subsidiary of Cygames.
He is awarding Microsoft MVP for Developer Technologies(C#) since 2011.
He is known as the creator of UniRx and MessagePack for C#.

License

This library is under the MIT License.

Versions 0

No versions tracked yet.

Dependencies 0

No dependencies.

Changelog 0 releases

No changelog entries yet. Run the admin Changelog & Version Scanner to pull from the repository's CHANGELOG.md.

README Markdown

Copy this to your project's README.md

Style
Preview
pkglnk installs badge
## Installation

Add **RandomFixtureKit** to your Unity project via Package Manager:

1. Open **Window > Package Manager**
2. Click **+** > **Add package from git URL**
3. Enter:
```
https://www.pkglnk.dev/randomfixturekit.git
```

[![pkglnk](https://www.pkglnk.dev/badge/randomfixturekit.svg?style=pkglnk)](https://www.pkglnk.dev/pkg/randomfixturekit)
Embed badge README snippet
Markdown
[![pkglnk installs](https://www.pkglnk.dev/badge/randomfixturekit.svg)](https://www.pkglnk.dev/pkg/randomfixturekit)
HTML
<a href="https://www.pkglnk.dev/pkg/randomfixturekit"><img src="https://www.pkglnk.dev/badge/randomfixturekit.svg" alt="pkglnk installs"></a>
URL
https://www.pkglnk.dev/badge/randomfixturekit.svg

Comments

No comments yet. Be the first!