junit – 我们应该定义我们的接口以使其更可测试吗?

例如,代码段A.

String readSource(String file);

代码片段B.

String readSource(InputStream in);

因此,如果我们将接口定义为A,那么我们只能创建一个仅用于测试的文件.但是,经过一段时间后,管理测试文件将变得非常困难.因此使用B接口,它将使测试更容易.我只需要创建一个假的InputStream然后检查该方法是否返回我们想要的结果.但是我们必须在每次调用此方法之前处理IOException.

最佳答案 如果readSource()做的更精细,而不仅仅是返回文件的内容,我肯定会选择解决方案B.

除了更好的可测试性之外,引入一个新的抽象概念(InputStream)允许您清楚地分离职责 – 一个对象打开正确的文件并将其内容放入内存,一个对象从流中读取源并返回您需要的任何内容从它返回(单一责任原则).

点赞