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可以简化在开发过程中创建测试数据和假数据的过程,从而使开发流程更加高效和便捷。