我真的开始享受单元测试,并向单元测试大师提出以下问题。
比如说我有以下课程
public class FileMapper
{
public Dictionary<string, string> ReadFile(string filename, string delimeter){}
}
在我的案例中,你们通常如何对Parser或ReadFile方法进行单元测试?
答案 0 :(得分:8)
鉴于您提供的方法签名,您可以“简单地”通过使用大量不同的输入调用ReadFile方法对其进行单元测试,并验证返回值是否正确。
但是,这可能导致Obscure Tests,因为非常重要的测试输入隐藏在文件中,而不是在您查看每个测试时可见。
这是 TDD 显示其力量的地方,因为它应该提示我们考虑更好的API 。
例如,您可以将方法更改为:
public Dictionary<string, string> ReadFile(TextReader reader, string delimeter)
从文件中获取TextReader仍然非常容易,但现在您可以使用StringReader提供单元测试输入。
此更改不仅可以更轻松地对ReadFile方法进行单元测试,还可以使该方法更加普遍可用,因为它不再具有紧密耦合到文件系统。