autofixture - AutoFixture.AutoFakeItEasy 5.0.0-preview0003

This extension turns AutoFixture into an Auto-Mocking Container. The mock instances are created by FakeItEasy. To use it, add the AutoFakeItEasyCustomization to your Fixture instance.

PM> Install-Package AutoFixture.AutoFakeItEasy -Version 5.0.0-preview0003 -Source https://www.myget.org/F/autofixture/api/v3/index.json

Copy to clipboard

> nuget.exe install AutoFixture.AutoFakeItEasy -Version 5.0.0-preview0003 -Source https://www.myget.org/F/autofixture/api/v3/index.json

Copy to clipboard

> dotnet add package AutoFixture.AutoFakeItEasy --version 5.0.0-preview0003 --source https://www.myget.org/F/autofixture/api/v3/index.json

Copy to clipboard
<PackageReference Include="AutoFixture.AutoFakeItEasy" Version="5.0.0-preview0003" />
Copy to clipboard
source https://www.myget.org/F/autofixture/api/v3/index.json

nuget AutoFixture.AutoFakeItEasy  ~> 5.0.0-preview0003
Copy to clipboard

> choco install AutoFixture.AutoFakeItEasy --version 5.0.0-preview0003 --source https://www.myget.org/F/autofixture/api/v2

Copy to clipboard
Import-Module PowerShellGet
Register-PSRepository -Name "autofixture" -SourceLocation "https://www.myget.org/F/autofixture/api/v2"
Install-Module -Name "AutoFixture.AutoFakeItEasy" -RequiredVersion "5.0.0-preview0003" -Repository "autofixture" -AllowPreRelease
Copy to clipboard

Browse the sources in this package using Visual Studio or WinDbg by configuring the following symbol server URL: https://www.myget.org/F/autofixture/api/v2/symbolpackage/


AutoFixture

License release NuGet version NuGet preview version NuGet downloads AutoFixture

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.

Check the testimonials to see what other people have to say about AutoFixture.

Table of Contents

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 and unit tests more refactoring-safe. 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:

[Fact]
public void IntroductoryTest()
{
    // Arrange
    Fixture fixture = new Fixture();

    int expectedNumber = fixture.Create<int>();
    MyClass sut = fixture.Create<MyClass>();
    // Act
    int result = sut.Echo(expectedNumber);
    // Assert
    Assert.Equal(expectedNumber, result);
}

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 Create<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).

Given the right combination of unit testing framework and extensions for AutoFixture, we can further reduce the above test to be even more declarative:

xUnit

[Theory, AutoData]
public void IntroductoryTest(int expectedNumber, MyClass sut)
{
    int result = sut.Echo(expectedNumber);
    Assert.Equal(expectedNumber, result);
}

NUnit

[Test, AutoData]
public void IntroductoryTest(int expectedNumber, MyClass sut)
{
    int result = sut.Echo(expectedNumber);
    Assert.Equal(expectedNumber, result);
}

Notice how we can reduce unit tests to state only the relevant parts of the test. The rest (variables, Fixture object) is relegated to attributes and parameter values that are supplied automatically by AutoFixture. The test is now only two lines of code.

Using AutoFixture is as easy as referencing the library and creating a new instance of the Fixture class!

Downloads

AutoFixture packages are distributed via NuGet.
To install the packages you can use the integrated package manager of your IDE, the .NET CLI, or reference the package directly in your project file.

dotnet add package AutoFixture --version 4.18.0
<PackageReference Include="AutoFixture" Version="4.18.0" />

AutoFixture offers a variety of utility packages and integrations with most of the major mocking libraries and testing frameworks.

Core packages

The core packages offer the full set of AutoFixture's features without requring any testing framework or third party integration.

Product Package Stable Preview Downloads
The core package AutoFixture NuGet NuGet NuGet
Assertion idioms AutoFixture.Idioms NuGet NuGet NuGet
Seed extensions AutoFixture.SeedExtensions NuGet NuGet NuGet

Mocking libraries

AutoFixture offers integations with most major .NET mocking libraries.
These integrations enable such features as configuring mocks, auto-injecting mocks, etc.

Product Package Stable Preview Downloads
Moq AutoFixture.AutoMoq NuGet NuGet NuGet
NSubstitute AutoFixture.AutoNSubstitute NuGet NuGet NuGet
FakeItEasy AutoFixture.AutoFakeItEasy NuGet NuGet NuGet
Rhino Mocks AutoFixture.AutoRhinoMocks NuGet NuGet NuGet

NOTE: Since AutoFixture tries maintain compatibility with a large number of package versions, the packages bundled with AutoFixture might not contain the latest features of your mocking library.
Make sure to install the latest version of the mocking library package, alongside the AutoFixture package.

Testing frameworks

AutoFixture offers integrations with most major .NET testing frameworks.
These integrations enable auto-generation of test cases, combining auto-generated data with inline arguments, etc.

Product Package Stable Preview Downloads
xUnit v3 AutoFixture.Xunit3 NuGet NuGet NuGet
xUnit v2 AutoFixture.Xunit2 NuGet NuGet NuGet
xUnit v1 AutoFixture.Xunit NuGet NuGet NuGet
NUnit v4 AutoFixture.NUnit4 NuGet NuGet NuGet
NUnit v3 AutoFixture.NUnit3 NuGet NuGet NuGet
NUnit v2 AutoFixture.NUnit2 NuGet NuGet NuGet
Foq AutoFixture.AutoFoq NuGet NuGet NuGet

You can check the compatibility with your target framework version on the wiki or on the NuGet website.

vNext feed

The artifacts of the next major version are published to nuget.org, and are marked with the preview suffix (e.g. 5.0.0-preview00007).
You can use these packages to early access and test the next major version of the AutoFixture.
Make sure to enable the preview packages in your IDE in order to see the latest version.

NOTE: This preview versions exists for the preview purpose only, so use them with caution:

  • New versions of packages might contain breaking changes and API could change drastically from package to package. By other words, we don't follow the SemVer policy for the packages in this feed;
  • Preview packages might be unlisted over time, in order to not clutter the version suggestion dialog in IDEs, but will generally remain available

Documentation

Additional resources

Feedback & Questions

If you have questions, feel free to ask. The best places to ask are:

License

AutoFixture is Open Source software and is released under the MIT license.
The licenses allows the use of AutoFixture libraries in free and commercial applications and libraries without restrictions.

.NET Foundation

This project is supported by the .NET Foundation.

  • .NETFramework 4.5.2
    • AutoFixture (>= 5.0.0-preview0003)
    • FakeItEasy (>= 1.7.4109.1 && < 8.0.0)
  • .NETStandard 1.6
    • AutoFixture (>= 5.0.0-preview0003)
    • FakeItEasy (>= 3.0.0 && < 7.0.0)
    • NETStandard.Library (>= 1.6.1)
  • .NETStandard 2.0
    • AutoFixture (>= 5.0.0-preview0003)
    • FakeItEasy (>= 4.9.0 && < 8.0.0)
  • .NETFramework 4.5.2: 4.5.2.0
  • .NETStandard 1.6: 1.6.0.0
  • .NETStandard 2.0: 2.0.0.0

Owners

Oleks Povar AutoFixture

Authors

Nikos Baxevanis, AutoFixture

Project URL

https://github.com/AutoFixture/AutoFixture

License

MIT

Info

7663 total downloads
96 downloads for version 5.0.0-preview0003
Download (82.92 KB)
Download symbols (29.42 KB)
Found on the current feed only

Package history

Version Size Last updated Downloads Mirrored?
5.0.0-preview0005 55.74 KB Tue, 10 May 2022 20:36:14 GMT 112
5.0.0-preview0004 55.78 KB Thu, 24 Mar 2022 20:53:58 GMT 86
5.0.0-preview0003 82.92 KB Mon, 08 Nov 2021 21:45:15 GMT 96
4.0.0-alpha.281 22.62 KB Tue, 17 Oct 2017 19:09:14 GMT 100
4.0.0-alpha.280 22.64 KB Mon, 16 Oct 2017 21:51:47 GMT 73
4.0.0-alpha.277 22.66 KB Mon, 16 Oct 2017 20:57:03 GMT 99
4.0.0-alpha.276 22.61 KB Mon, 16 Oct 2017 20:48:31 GMT 78
4.0.0-alpha.275 22.75 KB Mon, 16 Oct 2017 10:39:31 GMT 98
4.0.0-alpha.274 22.77 KB Mon, 16 Oct 2017 10:00:57 GMT 102
4.0.0-alpha.273 22.74 KB Mon, 16 Oct 2017 09:14:55 GMT 104
4.0.0-alpha.272 22.74 KB Sun, 15 Oct 2017 12:48:13 GMT 107
4.0.0-alpha.271 22.75 KB Sun, 15 Oct 2017 11:48:47 GMT 88
4.0.0-alpha.270 22.76 KB Sat, 14 Oct 2017 20:46:37 GMT 92
4.0.0-alpha.269 22.73 KB Fri, 13 Oct 2017 09:27:48 GMT 90
4.0.0-alpha.268 22.73 KB Fri, 13 Oct 2017 08:13:46 GMT 88
4.0.0-alpha.267 22.74 KB Fri, 13 Oct 2017 07:58:43 GMT 109
4.0.0-alpha.266 22.74 KB Thu, 12 Oct 2017 12:48:42 GMT 80
4.0.0-alpha.265 22.73 KB Wed, 11 Oct 2017 11:49:29 GMT 69
4.0.0-alpha.263 22.76 KB Tue, 10 Oct 2017 20:34:15 GMT 91
4.0.0-alpha.262 22.75 KB Tue, 10 Oct 2017 17:21:11 GMT 110
4.0.0-alpha.261 22.77 KB Tue, 10 Oct 2017 13:35:39 GMT 101
4.0.0-alpha.260 22.76 KB Mon, 09 Oct 2017 08:57:09 GMT 96
4.0.0-alpha.259 22.79 KB Mon, 09 Oct 2017 08:49:51 GMT 85
4.0.0-alpha.258 22.79 KB Sun, 08 Oct 2017 21:32:22 GMT 93
4.0.0-alpha.257 22.75 KB Sun, 08 Oct 2017 16:09:54 GMT 107
4.0.0-alpha.256 22.75 KB Sun, 08 Oct 2017 13:38:27 GMT 109
4.0.0-alpha.255 22.72 KB Sat, 07 Oct 2017 23:33:25 GMT 107
4.0.0-alpha.254 22.74 KB Sat, 07 Oct 2017 23:09:36 GMT 84
4.0.0-alpha.253 22.77 KB Fri, 06 Oct 2017 09:23:27 GMT 79
4.0.0-alpha.252 22.76 KB Fri, 06 Oct 2017 08:57:02 GMT 114
4.0.0-alpha.251 22.73 KB Fri, 06 Oct 2017 08:03:45 GMT 98
4.0.0-alpha.250 22.67 KB Fri, 06 Oct 2017 07:56:48 GMT 107
4.0.0-alpha.249 22.7 KB Wed, 04 Oct 2017 09:25:53 GMT 82
4.0.0-alpha.248 22.7 KB Tue, 03 Oct 2017 11:57:37 GMT 97
4.0.0-alpha.247 22.7 KB Tue, 03 Oct 2017 10:51:07 GMT 84
4.0.0-alpha.246 22.68 KB Tue, 03 Oct 2017 10:44:22 GMT 112
4.0.0-alpha.245 22.69 KB Tue, 03 Oct 2017 10:36:58 GMT 117
4.0.0-alpha.244 22.69 KB Mon, 02 Oct 2017 10:54:26 GMT 106
4.0.0-alpha.243 22.69 KB Mon, 02 Oct 2017 09:33:29 GMT 92
4.0.0-alpha.242 16.59 KB Sun, 01 Oct 2017 18:39:17 GMT 97
4.0.0-alpha.241 16.45 KB Sat, 30 Sep 2017 21:00:32 GMT 109
4.0.0-alpha.240 16.44 KB Sat, 30 Sep 2017 20:42:16 GMT 106
4.0.0-alpha.238 16.45 KB Thu, 21 Sep 2017 16:33:10 GMT 84
4.0.0-alpha.237 16.44 KB Thu, 21 Sep 2017 08:51:49 GMT 85
4.0.0-alpha.236 16.45 KB Wed, 20 Sep 2017 19:13:14 GMT 97
4.0.0-alpha.235 16.44 KB Tue, 19 Sep 2017 13:23:27 GMT 70
4.0.0-alpha.234 16.44 KB Tue, 19 Sep 2017 09:07:59 GMT 84
4.0.0-alpha.233 16.44 KB Mon, 18 Sep 2017 10:13:37 GMT 118
4.0.0-alpha.232 16.44 KB Mon, 18 Sep 2017 09:30:31 GMT 118
4.0.0-alpha.231 16.43 KB Mon, 18 Sep 2017 09:19:36 GMT 91
4.0.0-alpha.230 16.44 KB Thu, 14 Sep 2017 07:25:35 GMT 102
4.0.0-alpha.229 16.43 KB Wed, 13 Sep 2017 12:24:07 GMT 112
4.0.0-alpha.228 16.43 KB Tue, 12 Sep 2017 11:35:10 GMT 90
4.0.0-alpha.227 16.43 KB Tue, 12 Sep 2017 08:28:51 GMT 127
4.0.0-alpha.226 16.44 KB Mon, 11 Sep 2017 08:23:45 GMT 89
4.0.0-alpha.225 16.43 KB Mon, 11 Sep 2017 08:17:35 GMT 110
4.0.0-alpha.224 16.44 KB Mon, 11 Sep 2017 08:11:46 GMT 94
4.0.0-alpha.223 16.43 KB Fri, 08 Sep 2017 08:48:33 GMT 83
4.0.0-alpha.222 16.43 KB Thu, 07 Sep 2017 08:07:22 GMT 114
4.0.0-alpha.221 16.44 KB Wed, 06 Sep 2017 13:08:41 GMT 83
4.0.0-alpha.220 16.43 KB Wed, 06 Sep 2017 12:28:50 GMT 88
4.0.0-alpha.219 16.44 KB Wed, 06 Sep 2017 09:33:09 GMT 101
4.0.0-alpha.218 16.44 KB Tue, 05 Sep 2017 09:09:10 GMT 81
4.0.0-alpha.217 16.44 KB Tue, 05 Sep 2017 08:54:04 GMT 92
4.0.0-alpha.216 16.43 KB Fri, 01 Sep 2017 10:56:03 GMT 75
4.0.0-alpha.215 16.43 KB Fri, 01 Sep 2017 08:57:04 GMT 86
4.0.0-alpha.214 9.23 KB Thu, 31 Aug 2017 11:13:59 GMT 104
4.0.0-alpha.213 9.23 KB Thu, 31 Aug 2017 10:53:33 GMT 85
4.0.0-alpha.212 9.23 KB Thu, 31 Aug 2017 10:05:45 GMT 97
4.0.0-alpha.211 9.23 KB Thu, 31 Aug 2017 09:29:42 GMT 89
4.0.0-alpha.210 9.23 KB Tue, 29 Aug 2017 10:13:39 GMT 104
4.0.0-alpha.209 9.23 KB Mon, 28 Aug 2017 08:44:18 GMT 89
4.0.0-alpha.208 9.24 KB Thu, 24 Aug 2017 22:50:29 GMT 108
4.0.0-alpha.207 9.24 KB Thu, 24 Aug 2017 22:41:29 GMT 110
4.0.0-alpha.206 9.23 KB Thu, 24 Aug 2017 09:51:50 GMT 94
4.0.0-alpha.205 9.23 KB Tue, 22 Aug 2017 09:44:06 GMT 83
4.0.0-alpha.204 9.51 KB Tue, 22 Aug 2017 09:00:08 GMT 85
4.0.0-alpha.203 9.5 KB Tue, 22 Aug 2017 08:49:05 GMT 105
4.0.0-alpha.202 9.5 KB Sun, 20 Aug 2017 07:15:00 GMT 89
4.0.0-alpha.201 9.5 KB Fri, 18 Aug 2017 11:24:54 GMT 93