在C#中自动创建Object Mother类

时间:2013-09-18 10:05:39

标签: c# unit-testing nunit nsubstitute

我正在使用Object Mother进行单元测试,我不想编写所有OM类==重复的类结构。 是否可以创建一些自动生成OM类的基类OM类?

class MyNewObjectMother: ObjectMother<SomeClass>{}

这应该创建所有属性public和方法CreateInstance,它们创建类对象并注入所有属性。 可能吗?什么是最佳做法?或者可能是一些自动T4代码生成等。 感谢。

3 个答案:

答案 0 :(得分:3)

你应该看看NBuilder。它与ObjectMother略有不同(参见this blog post)。

您可以执行

之类的操作
Builder<Product>.CreateNew().With(x => x.Title = "some title").Build();
Builder<Product>.CreateListOfSize(10).WhereAll().Have(x => x.Title = "some title").Build();

答案 1 :(得分:2)

正如Shamp00指出的那样,对象母亲的一种更易于维护的替代方法是Test Data Builder pattern。除了NBuilder之外,您还可以考虑AutoFixture,它也实现了测试数据生成器模式。

它使您能够创建如下的测试实例:

var sc = fixture.Build<SomeClass>().With(x => x.Foo, "Foo").Build();

以及许多其他功能;上面的例子实际上只是划伤了表面。

答案 2 :(得分:0)

您还可以尝试使用T4模板进行DTO: http://www.taimila.com/blog/dto-builders-with-t4/

它很有用