TDD在文本文件导入项目中

Pro*_*ofK 3 c# testing tdd nunit unit-testing

我刚刚开始,是的,我还没有编写任何测试(我不是原教旨主义者,我不喜欢因为没有测试而编译错误),但我想知道从哪里开始在将类详细信息写入(通过转换)到DB表之前,执行一个项目,该项目根据XML映射将固定长度的平面文件记录解析为表示所有文件布局的超集的类.

有很多外部因素,我不想全部嘲笑它们,那么在哪里或如何开始测试这个项目的好方法呢?

Tru*_*ill 7

这就是将问题分解成部分.一些例子:

  • 文件/流阅读器
  • 输入映射器
  • 输入映射器加载器
  • 文件布局
  • 文件布局集合
  • 数据访问层

尽量给每个类别的单一职责,确定它的依赖,并注入那些,即,用嘲笑/存根的帮助下,将允许您隔离测试每个类.


Jon*_*eet 5

我发现有两种技术可用于测试基于IO的类:

  • 在可能的情况下,用一般术语来说话StreamReader,Stream而不是文件名.创建一个StringReader或一个MemoryStream测试并以这种方式提供数据很容易.
  • 有时您需要的数据量超过您希望嵌入代码中的文字中的数据.在这种情况下,将测试文件(有时是输入和预期输出)添加为嵌入式资源,并用于Assembly.GetManifestResourceStream在执行时获取数据.

除了这些一般要点之外,TrueWill的建议听起来非常好.如果你可以分割更大的任务,那么为每个单独的位编写单元测试听起来可能很容易 - 除了数据库访问,这通常很痛苦.如果您可以使数据库部分尽可能小,提供来自另一个易于测试的类的所有数据,这将使生活更简单.