是否有任何工具用随机数据填充类属性?

我想要做的是创建一个具有不同属性的属性的类,将该类传递给另一个将使用适当的随机数据设置属性的类…这里是伪代码:

public class Customer { [Attribute("FirstName")] private string CustomerFirstName; public {get;set} //etc [Attribute("LastName")] private string CustomerLastName; public {get;set;} //etc [Attribute("DateTime")] private DateTime CustomerSignUpDate; public DateTime {get;set;} //yadda [Attribute("Phone")] private string CustomerPhone; public string {get;set;} //yadda } 

然后这样做

 IList CustomerList=ClassFillerOutClass(new Customer(),5); 

结果将是5个客户的列表,其属性中具有适当的“随机”数据。

如果这不存在……我想我可以自己开始一个项目……如果没有必要,我只是不想重新发明轮子。

编辑:我忘了一块。 我想用它作为测试工具。 因此,在上面的示例中,我可以快速创建一个包含随机但适当值的5个客户的列表。 然后说把它传递给我的持久性方法,并且有一些我可以检查的东西。 我试图避免每次为TDD目的手动创建一个填充的对象。

编辑2:好的,所以我开始自己开始…我将在本周末将它发布在Codeplex上并在此处链接…我显然不会这样做但是如果其他人想要继续工作它将会是一个开始它。

好的…所以我从未找到过……所以我决定开始自己的。 退房: 对象保温器 。

该项目目前是一个快速的峰值…但我认为它有潜力…让我知道你是否有想法如何使它更好。

我尝试过AutoFixture( http://autofixture.codeplex.com/ ),它对我来说效果很好。 我能够在一行代码中生成一个具有深层次子层次的对象。

现在你也有NBuilder( nbuilder.org )做同样的事情 。

我不知道两个项目是否相关联。

我不知道你的目标,但我会保持这接近代码级别。 这种方法可能对你不起作用,但它对我来说过去了。

您可以生成随机数据并将其放入数据库中。 有一些商业成本产品可以做到这一点。 我使用的是RedGate的SQL数据生成器。

有了这些数据,您可以在SQL中进行一些文本操作来转换列数据:

 Table Customer FirstName | LastName | SignUpDate | Phone Bob Smith 1/2/2009 555-555-1212 Jane Doe 9/11/2009 555-300-1334 ... 

成:

 new Customer () { CustomerFirstName = "Bob", CustomerLastName = "Smith", CustomerSignUpDate = DateTime.Parse("1/2/2009"), Phone = "555-555-1212" }, new Customer () { CustomerFirstName = "Jane", CustomerLastName = "Doe", CustomerSignUpDate = DateTime.Parse("9/11/2009"), Phone = "555-300-1334 }, 

并使用文本编辑器将其包装到下面(这是C#3.0语法):

 public class FakeCustomerRepository { private IList m_Customers = new List() { [insert SQL text transform here] }; public Customer Get(...) { return m_Customers.Find(...); } } 

同样,我不知道您的需求以及您是否需要在运行时随机数据。 上述方法仅在您希望快速,静态地生成大量数据时才有用。

建议的所有对象填充程序都不适用于我的复杂对象。

我有超级复杂的嵌套对象,其中包含嵌套数组的数组,这对我来说只有一半。 http://hydrator.codeplex.com/

我填充除arrays之外的所有东西。

你可以在c#中使用Object Hydrator

urlhttp://objecthydrator.codeplex.com/

并使用像

 public Employee GetEmployee() { return new Hydrator().GetSingle(); } public IList< Employee> GetEmployees() { return new Hydrator().GetList(100); } 

阿南德