AutoFixture
AutoFixture 是一个用于 .NET 的测试工具,它允许开发者在单元测试中自动生成随机的测试数据。它支持广泛的数据类型,包括常见的基元类型、复杂对象、集合等。AutoFixture 通过使用继承、接口、属性和构造函数等机制来推断如何创建复杂的对象。
安装:
Install-Package AutoFixture
示例代码:
using AutoFixture;
using Newtonsoft.Json;
Fixture fixture = new Fixture();
var sut = fixture.Create<TestClass>();
var json = JsonConvert.SerializeObject(sut, Formatting.Indented);
Console.WriteLine(json);
Console.ReadLine();
public class TestClass
{
public int Index { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
源码库:
https://github.com/AutoFixture/AutoFixture
Bogus
Bogus 是一个开源的 .NET 库,它提供了一个强大的工具集,用于生成虚假(mock)数据。方便项目用于测试、填充数据库、创建模拟数据集或生成示例数据,以便开发、测试、演示使用。
安装:
Install-Package Bogus
示例代码:
using Bogus;
// 创建一个 Faker 实例
var faker = new Faker();
//示例1:生成一个随机的名字
string name = faker.Person.FullName;
Console.WriteLine(name);
//示例2:生成一个随机的地址
string address = faker.Address.FullAddress();
Console.WriteLine(address);
//示例3:生成一个随机的日期
DateTime date = faker.Date.Past();
Console.WriteLine(date);
//示例4
// 创建一个自定义的数据生成器
var customGenerator = new Faker<Address>()
.RuleFor(a => a.Street, f => f.Address.StreetName())
.RuleFor(a => a.City, f => f.Address.City());
// 使用自定义生成器生成一个地址对象
Address generatedAddress = customGenerator.Generate();
Console.WriteLine($"Street: {generatedAddress.Street}, City: {generatedAddress.City}");
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
源码库:
https://github.com/bchavez/Bogus