NBuilder 是一个基于 C# 的构建器工具,用于生成可重用的、可测试的、可维护的对象。它使用注解来生成构建器 API,该 API 可用于以链式的方式初始化对象。
以下是NBuilder库的一些主要用途:
在使用NBuilder之前,需要先通过NuGet安装NBuilder库,然后在代码中添加对NBuilder的引用。
使用NBuilder生成几个Person对象的测试数据的简单示例如下:
using System;
using System.Collections.Generic;
using NBuilder;
namespace Example
{
public class Program
{
// Person类
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
// 产生随机字符串函数
static string GenerateRandomString(int length, string characters)
{
Random random = new Random((int)(BitConverter.ToInt32(Guid.NewGuid().ToByteArray(), 0)));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++)
{
int index = random.Next(characters.Length);
sb.Append(characters[index]);
}
return sb.ToString();
}
static void Main(string[] args)
{
Random random = new Random();
// 字符串取值范围
string characters = "abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
// 创建一个Person列表,包含5个随机生成的Person对象
List<Person> persons = (List<Person>)Builder<Person>.CreateListOfSize(5)
.All()
.With(p => p.Id = p.Id)
.With(p => p.Name = GenerateRandomString(random.Next(1, 8), characters))
.With(p => p.Age = random.Next(20, 60))
.With(p => p.Email = p.Name.ToLower().Replace(" ", ".") + "@test.com")
.Build();
// 打印Person对象列表
foreach (Person p in persons)
{
Console.WriteLine($"{p.Id}\t{p.Name}\t{p.Age}\t{p.Email}");
}
Console.ReadKey();
}
}
}
代码说明:
定义一个Person类,它有Id、Name、Age和Email等属性。
使用NBuilder库的Builder<T>类的CreateListOfSize方法创建了一个包含5个Person对象的列表。
在With方法中,为每个Person对象指定了生成规则,使用GenerateRandomString方法生成随机姓名,使用Random.Next()方法生成随机年龄,使用Replace()方法为Email属性生成随机Email地址。
在Build方法中生成了Person对象列表,并使用foreach循环遍历输出每个Person对象的属性。
总结:
NBuilder可以简化在开发过程中创建测试数据和假数据的过程,从而使开发流程更加高效和便捷。