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

Pie*_*uys 3 .net unit-testing

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

比如说我有以下课程

public class FileMapper
{
   public Dictionary<string, string> ReadFile(string filename, string delimeter){}
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,你们通常如何对Parser或ReadFile方法进行单元测试?

Mar*_*ann 8

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

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

这是TDD展示其力量的地方,因为它应该促使我们考虑更好的API.

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

public Dictionary<string, string> ReadFile(TextReader reader, string delimeter)
Run Code Online (Sandbox Code Playgroud)

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

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