1

我正在查看android源代码,我发现了这段代码。

/**
 * Interface used in {@link #createUniqueFile} instead of {@link File#createNewFile()} to make
 * it testable.
 */
/* package */ interface NewFileCreator {
    public static final NewFileCreator DEFAULT = new NewFileCreator() {
                @Override public boolean createNewFile(File f) throws IOException {
                    return f.createNewFile();
                }
    };
    public boolean createNewFile(File f) throws IOException ;
}

它如何更可测试?任何人都可以将我重定向到我可以看到更多示例的地方吗?

4

2 回答 2

4

原因是在您的测试中,您可以用不同的实现替换 NewFileCreator,无论它在哪里使用——例如,它只是将数据保存在内存中。

这意味着您可以测试使用它的任何东西的逻辑,而不必担心确保真实的文件系统存在并且它处于合适的状态。

于 2012-10-22T10:47:55.103 回答
1

我认为“使其可测试”这句话是指createUniqueFile似乎使用NewFileCreator. 该方法应该更好地单独测试,因为模拟 aNewFileCreatorFile从标准 Java API 模拟 a 更容易。还可以提供NewFileCreator不弄乱文件系统的测试的不同实现。

于 2012-10-22T10:48:42.627 回答