Soenneker.Utils.AutoBogus
2.1.192
Prefix Reserved
See the version list below for details.
dotnet add package Soenneker.Utils.AutoBogus --version 2.1.192
NuGet\Install-Package Soenneker.Utils.AutoBogus -Version 2.1.192
<PackageReference Include="Soenneker.Utils.AutoBogus" Version="2.1.192" />
paket add Soenneker.Utils.AutoBogus --version 2.1.192
#r "nuget: Soenneker.Utils.AutoBogus, 2.1.192"
// Install Soenneker.Utils.AutoBogus as a Cake Addin
#addin nuget:?package=Soenneker.Utils.AutoBogus&version=2.1.192
// Install Soenneker.Utils.AutoBogus as a Cake Tool
#tool nuget:?package=Soenneker.Utils.AutoBogus&version=2.1.192
Soenneker.Utils.AutoBogus
The .NET Autogenerator
This project is an automatic creator and populator for the fake data generator Bogus. It's a replacement for the abandoned AutoBogus library.
The goals:
- Be fast
- Support the latest types in .NET
It uses the fastest .NET Reflection cache: soenneker.reflection.cache. Bogus updates are automatically integrated.
.NET 6+ is supported.
Installation
dotnet add package Soenneker.Utils.AutoBogus
Usage
- Create an
AutoFaker
instance:
var optionalConfig = new AutoFakerConfig();
var autoFaker = new AutoFaker(optionalConfig);
- Call
Generate<>()
on any type you want:
var randomWord = autoFaker.Generate<string>();
var dictionary = autoFaker.Generate<Dictionary<int, string>>();
var order = autoFaker.Generate<Order>();
- It's also possible to generate types via an argument:
var randomWord = autoFaker.Generate(typeof(string));
- Set a faker, configuration, rules, etc:
autoFaker.Config.Faker = new Faker("de");
autoFaker.Config.RepeatCount = 3;
...
AutoFakerOverride
This is the recommended way for controlling type customization:
public class OrderOverride : AutoFakerOverride<Order>
{
public override void Generate(AutoFakerOverrideContext context)
{
var target = (context.Instance as Order)!;
target.Id = 123;
// Faker is available
target.Name = context.Faker.Random.Word();
// AutoFaker is also available
target.Customer = context.AutoFaker.Generate<Customer>();
}
}
Then just add AutoFakerOverride
to the AutoFaker.Config
instance:
autoFaker.Config.Overrides = new List<AutoFakerGeneratorOverride>();
autoFaker.Config.Overrides.Add(new OrderOverride());
AutoFaker<T>
This inherits from Bogus.Faker
, and can be used to designate rules specific to the AutoFaker
instance.
var autoFaker = new AutoFaker<Order>());
autoFaker.RuleFor(x => x.Id, f => f.Random.Number());
var order = autoFaker.Generate();
Tips
- ⚠️ Instantiating an
AutoFaker
takes a non-trivial amount of time because of BogusFaker
initialization (almost 1ms). It's recommended that a single instance be used if possible. AutoFaker.GenerateStatic<T>()
is also available, but should be avoided (as it creates a newAutoFaker
/Faker
on each call).
Notes
- Some patterns that existed in AutoBogus have been removed due to the complexity and performance impact.
- This is a work in progress. Contribution is welcomed.
Benchmarks
Soenneker.Utils.AutoBogus - AutoFaker
Method | Mean | Error | StdDev |
---|---|---|---|
Generate_int | 79.40 ns | 0.635 ns | 0.563 ns |
Generate_string | 241.35 ns | 3.553 ns | 3.324 ns |
Generate_complex | 6,782.34 ns | 43.811 ns | 38.837 ns |
Soenneker.Utils.AutoBogus - AutoFaker<T>
Method | Mean | Error | StdDev |
---|---|---|---|
Generate_string | 283.6 ns | 3.28 ns | 3.07 ns |
Generate_complex | 8,504.0 ns | 76.58 ns | 67.89 ns |
AutoBogus
Method | Mean | Error | StdDev |
---|---|---|---|
Generate_int | 1.17 ms | 0.033 ms | 0.026 ms |
Generate_complex | 10.91 ms | 0.181 ms | 0.236 ms |
Bogus
Method | Mean | Error | StdDev |
---|---|---|---|
Bogus_int | 19.70 ns | 0.176 ns | 0.165 ns |
Bogus_string | 171.75 ns | 2.763 ns | 2.585 ns |
Bogus_ctor | 730,669.06 ns | 8,246.622 ns | 7,310.416 ns |
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Bogus (>= 35.5.1)
- Soenneker.Extensions.FieldInfo (>= 2.1.8)
- Soenneker.Extensions.MemberInfo (>= 2.1.8)
- Soenneker.Reflection.Cache (>= 2.1.107)
- System.Collections.Immutable (>= 8.0.0)
-
net7.0
- Bogus (>= 35.5.1)
- Soenneker.Extensions.FieldInfo (>= 2.1.8)
- Soenneker.Extensions.MemberInfo (>= 2.1.8)
- Soenneker.Reflection.Cache (>= 2.1.107)
- System.Collections.Immutable (>= 8.0.0)
-
net8.0
- Bogus (>= 35.5.1)
- Soenneker.Extensions.FieldInfo (>= 2.1.8)
- Soenneker.Extensions.MemberInfo (>= 2.1.8)
- Soenneker.Reflection.Cache (>= 2.1.107)
- System.Collections.Immutable (>= 8.0.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Soenneker.Utils.AutoBogus:
Package | Downloads |
---|---|
Soenneker.Tests.Unit
A base test providing faker and autofaker capabilities |
|
Soenneker.Fixtures.Unit
A base xUnit fixture providing injectable log output, DI mechanisms like IServiceCollection and ServiceProvider, and AutoFaker/Faker for generating test data. |
|
Soenneker.AutoFaker.Overrides.IdNamePair
An AutoFaker (AutoBogus) override for the DTO IdNamePair |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.1.234 | 2,836 | 6/1/2024 |
2.1.233 | 283 | 6/1/2024 |
2.1.232 | 67 | 6/1/2024 |
2.1.231 | 2,498 | 6/1/2024 |
2.1.230 | 2,913 | 5/31/2024 |
2.1.229 | 2,403 | 5/29/2024 |
2.1.228 | 67 | 5/29/2024 |
2.1.227 | 2,691 | 5/28/2024 |
2.1.226 | 55 | 5/28/2024 |
2.1.225 | 1,954 | 5/27/2024 |
2.1.224 | 66 | 5/27/2024 |
2.1.223 | 3,831 | 5/26/2024 |
2.1.221 | 2,507 | 5/26/2024 |
2.1.220 | 64 | 5/26/2024 |
2.1.219 | 1,721 | 5/25/2024 |
2.1.218 | 60 | 5/25/2024 |
2.1.215 | 845 | 5/25/2024 |
2.1.214 | 67 | 5/25/2024 |
2.1.213 | 2,656 | 5/25/2024 |
2.1.212 | 63 | 5/25/2024 |
2.1.211 | 63 | 5/25/2024 |
2.1.210 | 91 | 5/25/2024 |
2.1.208 | 6,572 | 5/23/2024 |
2.1.207 | 131 | 5/23/2024 |
2.1.206 | 68 | 5/23/2024 |
2.1.205 | 1,245 | 5/23/2024 |
2.1.204 | 70 | 5/23/2024 |
2.1.203 | 1,288 | 5/22/2024 |
2.1.202 | 76 | 5/22/2024 |
2.1.201 | 68 | 5/22/2024 |
2.1.200 | 67 | 5/22/2024 |
2.1.199 | 2,356 | 5/22/2024 |
2.1.197 | 562 | 5/22/2024 |
2.1.196 | 4,524 | 5/17/2024 |
2.1.195 | 1,751 | 5/17/2024 |
2.1.194 | 5,452 | 5/14/2024 |
2.1.193 | 77 | 5/14/2024 |
2.1.192 | 3,153 | 5/12/2024 |
2.1.191 | 4,503 | 4/29/2024 |
2.1.190 | 95 | 4/29/2024 |
2.1.189 | 86 | 4/29/2024 |
2.1.188 | 455 | 4/29/2024 |
2.1.187 | 74 | 4/29/2024 |
2.1.186 | 3,061 | 4/28/2024 |
2.1.185 | 87 | 4/28/2024 |
2.1.184 | 2,058 | 4/28/2024 |
2.1.183 | 804 | 4/28/2024 |
2.1.182 | 2,282 | 4/28/2024 |
2.1.181 | 73 | 4/28/2024 |
2.1.180 | 75 | 4/28/2024 |
2.1.179 | 1,536 | 4/28/2024 |
2.1.178 | 88 | 4/27/2024 |
2.1.177 | 73 | 4/27/2024 |
2.1.176 | 5,833 | 4/19/2024 |
2.1.175 | 2,084 | 4/18/2024 |
2.1.174 | 4,036 | 4/12/2024 |
2.1.173 | 1,652 | 4/12/2024 |
2.1.172 | 529 | 4/12/2024 |
2.1.171 | 381 | 4/12/2024 |
2.1.170 | 72 | 4/12/2024 |
2.1.169 | 66 | 4/12/2024 |
2.1.168 | 1,996 | 4/12/2024 |
2.1.167 | 76 | 4/12/2024 |
2.1.166 | 70 | 4/12/2024 |
2.1.165 | 71 | 4/12/2024 |
2.1.164 | 70 | 4/12/2024 |
2.1.163 | 5,720 | 4/9/2024 |
2.1.162 | 3,169 | 4/1/2024 |
2.1.161 | 82 | 4/1/2024 |
2.1.160 | 5,571 | 3/25/2024 |
2.1.159 | 71 | 3/25/2024 |
2.1.158 | 2,259 | 3/20/2024 |
2.1.157 | 2,070 | 3/19/2024 |
2.1.156 | 1,176 | 3/19/2024 |
2.1.155 | 3,280 | 3/15/2024 |
2.1.154 | 2,062 | 3/13/2024 |
2.1.153 | 841 | 3/13/2024 |
2.1.152 | 340 | 3/13/2024 |
2.1.151 | 89 | 3/13/2024 |
2.1.150 | 80 | 3/13/2024 |
2.1.149 | 88 | 3/13/2024 |
2.1.148 | 99 | 3/13/2024 |
2.1.147 | 2,654 | 3/12/2024 |
2.1.146 | 3,382 | 3/11/2024 |
2.1.145 | 84 | 3/11/2024 |
2.1.144 | 1,209 | 3/11/2024 |
2.1.143 | 1,692 | 3/9/2024 |
2.1.142 | 1,902 | 3/8/2024 |
2.1.141 | 1,240 | 3/8/2024 |
2.1.140 | 2,786 | 3/6/2024 |
2.1.139 | 87 | 3/6/2024 |
2.1.138 | 1,923 | 3/4/2024 |
2.1.137 | 76 | 3/4/2024 |
2.1.136 | 2,650 | 3/2/2024 |
2.1.135 | 1,165 | 3/2/2024 |
2.1.134 | 80 | 3/2/2024 |
2.1.133 | 1,473 | 3/2/2024 |
2.1.132 | 765 | 3/2/2024 |
2.1.131 | 1,732 | 2/29/2024 |
2.1.130 | 1,470 | 2/29/2024 |
2.1.129 | 1,736 | 2/26/2024 |
2.1.128 | 1,541 | 2/25/2024 |
2.1.127 | 76 | 2/25/2024 |
2.1.126 | 2,114 | 2/23/2024 |
2.1.125 | 1,608 | 2/22/2024 |
2.1.124 | 1,062 | 2/21/2024 |
2.1.123 | 1,378 | 2/21/2024 |
2.1.122 | 311 | 2/21/2024 |
2.1.121 | 296 | 2/21/2024 |
2.1.120 | 81 | 2/21/2024 |
2.1.119 | 1,285 | 2/21/2024 |
2.1.118 | 83 | 2/21/2024 |
2.1.117 | 81 | 2/21/2024 |
2.1.116 | 617 | 2/21/2024 |
2.1.115 | 980 | 2/21/2024 |
2.1.114 | 83 | 2/21/2024 |
2.1.113 | 86 | 2/21/2024 |
2.1.112 | 81 | 2/21/2024 |
2.1.111 | 776 | 2/21/2024 |
2.1.110 | 81 | 2/21/2024 |
2.1.109 | 2,586 | 2/20/2024 |
2.1.108 | 78 | 2/20/2024 |
2.1.107 | 2,573 | 2/19/2024 |
2.1.106 | 249 | 2/19/2024 |
2.1.104 | 2,813 | 2/17/2024 |
2.1.103 | 1,380 | 2/16/2024 |
2.1.102 | 71 | 2/16/2024 |
2.1.101 | 696 | 2/16/2024 |
2.1.100 | 1,147 | 2/16/2024 |
2.1.99 | 75 | 2/16/2024 |
2.1.98 | 70 | 2/16/2024 |
2.1.97 | 683 | 2/16/2024 |
2.1.96 | 70 | 2/16/2024 |
2.1.95 | 69 | 2/16/2024 |
2.1.94 | 1,393 | 2/16/2024 |
2.1.93 | 72 | 2/16/2024 |
2.1.92 | 2,058 | 2/13/2024 |
2.1.91 | 2,047 | 2/13/2024 |
2.1.90 | 773 | 2/13/2024 |
2.1.89 | 79 | 2/13/2024 |
2.1.88 | 642 | 2/13/2024 |
2.1.87 | 2,044 | 2/11/2024 |
2.1.86 | 781 | 2/11/2024 |
2.1.85 | 91 | 2/11/2024 |
2.1.84 | 1,469 | 2/11/2024 |
2.1.83 | 84 | 2/11/2024 |
2.1.82 | 1,086 | 2/11/2024 |
2.1.81 | 85 | 2/11/2024 |
2.1.80 | 88 | 2/11/2024 |
2.1.79 | 86 | 2/11/2024 |
2.1.78 | 83 | 2/11/2024 |
2.1.76 | 2,378 | 2/9/2024 |
2.1.75 | 83 | 2/9/2024 |
2.1.74 | 1,465 | 2/9/2024 |
2.1.73 | 87 | 2/9/2024 |
2.1.72 | 944 | 2/8/2024 |
2.1.71 | 83 | 2/8/2024 |
2.1.70 | 80 | 2/8/2024 |
2.1.69 | 441 | 2/8/2024 |
2.1.68 | 1,101 | 2/8/2024 |
2.1.67 | 87 | 2/8/2024 |
2.1.66 | 82 | 2/8/2024 |
2.1.65 | 1,099 | 2/8/2024 |
2.1.64 | 81 | 2/8/2024 |
2.1.63 | 770 | 2/8/2024 |
2.1.62 | 2,077 | 2/7/2024 |
2.1.61 | 1,053 | 2/6/2024 |
2.1.60 | 89 | 2/6/2024 |
2.1.59 | 1,350 | 2/6/2024 |
2.1.58 | 92 | 2/6/2024 |
2.1.57 | 850 | 2/6/2024 |
2.1.54 | 86 | 2/5/2024 |
2.1.53 | 84 | 2/5/2024 |
2.1.52 | 2,820 | 2/4/2024 |
2.1.51 | 1,257 | 2/2/2024 |
2.1.49 | 76 | 2/1/2024 |
2.1.48 | 1,661 | 1/31/2024 |
2.1.47 | 1,333 | 1/29/2024 |
2.1.46 | 1,328 | 1/29/2024 |
2.1.45 | 619 | 1/29/2024 |
2.1.44 | 826 | 1/28/2024 |
2.1.43 | 76 | 1/28/2024 |
2.1.42 | 853 | 1/28/2024 |
2.1.41 | 74 | 1/28/2024 |
2.1.40 | 78 | 1/28/2024 |
2.1.39 | 700 | 1/28/2024 |
2.1.38 | 908 | 1/28/2024 |
2.1.37 | 682 | 1/28/2024 |
2.1.36 | 78 | 1/28/2024 |
2.1.35 | 74 | 1/28/2024 |
2.1.34 | 77 | 1/28/2024 |
2.1.33 | 899 | 1/27/2024 |
2.1.31 | 293 | 1/27/2024 |
2.1.30 | 1,020 | 1/27/2024 |
2.1.29 | 937 | 1/27/2024 |
2.1.27 | 504 | 1/27/2024 |
2.1.26 | 994 | 1/27/2024 |
2.1.25 | 687 | 1/26/2024 |
2.1.24 | 72 | 1/26/2024 |
2.1.23 | 75 | 1/26/2024 |
2.1.22 | 76 | 1/26/2024 |
2.1.21 | 660 | 1/26/2024 |
2.1.20 | 647 | 1/26/2024 |
2.1.19 | 698 | 1/26/2024 |
2.1.18 | 694 | 1/26/2024 |
2.1.17 | 777 | 1/26/2024 |
2.1.16 | 781 | 1/26/2024 |
2.1.15 | 295 | 1/25/2024 |
2.1.14 | 844 | 1/25/2024 |
2.1.13 | 842 | 1/25/2024 |
2.1.12 | 78 | 1/25/2024 |
2.1.11 | 756 | 1/25/2024 |
2.1.10 | 712 | 1/25/2024 |
2.1.9 | 771 | 1/25/2024 |
2.1.7 | 5,137 | 1/15/2024 |
2.1.6 | 1,141 | 1/14/2024 |
2.1.5 | 1,417 | 1/14/2024 |
2.1.4 | 1,341 | 1/13/2024 |
2.1.3 | 1,366 | 1/5/2024 |
2.1.2 | 111 | 1/2/2024 |
2.1.1 | 117 | 12/29/2023 |