1

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

class MyNewObjectMother: ObjectMother<SomeClass>{}

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

4

3 回答 3

3

您应该查看NBuilder。它与 ObjectMother 的模式略有不同(请参阅此博客文章)。

你可以做类似的事情

Builder<Product>.CreateNew().With(x => x.Title = "some title").Build();
Builder<Product>.CreateListOfSize(10).WhereAll().Have(x => x.Title = "some title").Build();
于 2013-09-18T13:38:41.710 回答
3

正如 shamp00 所指出的,Object Mother 的一个更易于维护的替代方案是Test Data Builder 模式。除了 NBuilder,您还可以考虑AutoFixture,它也实现了 Test Data Builder 模式。

它将使您能够像这样创建测试实例:

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

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

于 2015-07-28T12:22:44.810 回答
0

您也可以尝试 DTO 的 T4 模板: http ://www.taimila.com/blog/dto-builders-with-t4/

它可能很有用

于 2015-07-28T11:42:54.927 回答