代码之家  ›  专栏  ›  技术社区  ›  jakub

mocking file.bufferedReader()提供了NullPointerException

  •  0
  • jakub  · 技术社区  · 6 年前

    为什么? file.bufferedReader() NullPointerException 在这里?

    val file = mock<File>()
    when(file.bufferedReader()).thenThrow(IOException::class.java)
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   jakub    6 年前

    根据这条线索 Unable to mock BufferedWriter class in junit

    您可以模拟Java IO类(包括它们的构造函数,所以将来 可能会遇到一些困难,例如 IO类被嘲笑)。

    但是,请注意,Java IO API包含许多交互类 以及深厚的继承层次。在您的示例中,FileWriter 会被创造出来。

    实现细节,很容易更改。你可以换 从IO流到writer,从常规IO到NIO,或者使用新的 例如,Java 8实用程序。或者使用第三方IO库。

    更糟糕的是,如果你改变了 将写入程序等注入SUT的客户端代码。附属国 注射不是为了这种事。

    测试后可以删除的测试目录,和/或使用 并带来更多有用的测试。某些开发人员会说 如果测试涉及到文件系统,则它不是单元测试”,但这是