如何获得单元测试的数据模板?

时间:2015-10-18 09:23:04

标签: c# unit-testing testing mocking tdd

我需要为这个方法编写一个单元测试:

public void MethodToTest(Data data)
{
     // ... some actions with data   
}

数据类:

public class Data
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Surname { get; set; }
    // ... hundred other properties
}

在我的测试中,我需要一些Data类型的模板对象来操作它。 但是这个类有太多复杂的属性来写这个"模板"手动。 在实际程序Data中,从DB检索对象。在调试时,我可以将其中一些序列化为XML或JSON。但后来我需要以某种方式反序列化它进行测试。相信有一个共同的模式和工具来解决这些问题。那么什么是正确的方法呢?

1 个答案:

答案 0 :(得分:2)

如果MethodToTest仅使用Data类的一些部分,则可以定义一个隔离这些属性的接口:

public interface PersonalData {
  string Name {get; set; }
  int Age {get; set; }
  string Surname {get; set; }
}

public void MethodToTest (PersonalData data) { ... }

并让Data实现此接口

public class Data: PersonalData { ... }

然后,您可以使用为您的测试实现PersonalData的测试类(或者您可以使用模拟框架来生成PersonalData的实现。)