c# - 如何获取单元测试的数据模板?

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

最佳答案

如果 MethodToTest 仅使用 Data 类的几个部分,您可以定义一个接口(interface)来隔离这些属性:

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

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

并让Data实现这个接口(interface)

public class Data: PersonalData { ... }

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

关于c# - 如何获取单元测试的数据模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33196311/

相关文章:

c# - 在 iPhone 5 上测试时加载图像出错

swift - 如何定义对类下的所有测试都不会改变的全局最终变量?

javascript - Ember集成测试,如何使用wait构建自定义Helper?

c - 寻找我参加的旧测试的答案,试图了解我应该做什么。(也许是 Malloc 函数?)

php - 功能测试失败,csrf_protection = true

C# AES 加密行为异常

c# - 我的 exe 本身运行良好,但在被服务加载时什么也不做

c# - 内插字符串的原始类型是什么?

javascript - 比较两个数组时,单元测试equals()失败

java - 使用 Jersey Test、Grizzly 和 HK2 依赖注入(inject)进行功能测试