单元测试CSV分析器和列映射工具

时间:2010-05-20 09:59:15

标签: .net unit-testing

我真的开始享受单元测试,并向单元测试大师提出以下问题。

比如说我有以下课程

public class FileMapper
{
   public Dictionary<string, string> ReadFile(string filename, string delimeter){}
}

在我的案例中,你们通常如何对Parser或ReadFile方法进行单元测试?

1 个答案:

答案 0 :(得分:8)

鉴于您提供的方法签名,您可以“简单地”通过使用大量不同的输入调用ReadFile方法对其进行单元测试,并验证返回值是否正确。

但是,这可能导致Obscure Tests,因为非常重要的测试输入隐藏在文件中,而不是在您查看每个测试时可见。

这是 TDD 显示其力量的地方,因为它应该提示我们考虑更好的API

例如,您可以将方法更改为:

public Dictionary<string, string> ReadFile(TextReader reader, string delimeter)

从文件中获取TextReader仍然非常容易,但现在您可以使用StringReader提供单元测试输入。

此更改不仅可以更轻松地对ReadFile方法进行单元测试,还可以使该方法更加普遍可用,因为它不再具有紧密耦合到文件系统。