需要建议|单元测试|灵活的数据准备

时间:2014-11-15 20:06:30

标签: asp.net-mvc unit-testing design-patterns

我们正在为我们的要求编写大量单元测试用例,并在准备数据时看到以下模式

我们发送的实体有大约20个属性,其中12-15个是常见的,其余的值需要根据需求进行更改

我在团队中看到重复代码,因为他们用来创建实例并创建所有属性并发送此对象。

重构了这个创建一个派生自原始类的类,并在此类的构造函数中设置公共属性。所以这样我就可以在创建对象时获得常用值,而其他用于在场景中设置的其他值

但有些我如何堕落这并不是一个好的模式,并且正在寻找一些更灵活和可维护的更好的模式

我们可以有一个Helper类,它将XML条目作为类的条目,并且将具有方案的额外属性并根据方案获取数据但是这似乎仍然不可维护

有些人可以提供一些设计建议

1 个答案:

答案 0 :(得分:1)

您可以实现一些创建默认对象实例的静态方法。此方法可以是对象本身的一部分,也可以是单元测试类的扩展方法或私有方法 - 无论您喜欢什么。

像这样:

public class Person
{
    // Properties...

    public static Person GetDefaultInstance()
    {
        return new Person()
        {
            // Set default properties here...
        };
    }
}

然后,您可以添加一些流畅的API方法并使用它们来覆盖默认属性:

public Person LivesAt(string address)
{
    Address = address;
    return this;
}

这样,你可以像这样初始化你正在测试的对象:

var person = Person.GetDefaultInstance()
                   .LivesAt("5th Avenue")
                   .WorksAt("Google");

因此,很明显您要为该特定单元测试更改默认实例的哪些属性。