测试用Java写入文件的方法

时间:2012-02-18 16:39:37

标签: java unit-testing testing file-io

我有一个写入具有给定名称的文件的方法。我是否必须测试此方法,如果是,我应该测试它?

public void record(Object o){
    try{

        FileWriter fileStream = new FileWriter("data.txt", true);
        BufferedWriter out = new BufferedWriter(fileStream);

        out.write(o.toString());
        out.newLine();  
        out.close();

    } catch (Exception e){
        System.err.println("Error: " + e.getMessage());
    }
}

4 个答案:

答案 0 :(得分:3)

您是否需要测试是否是您项目负责人的问题。如果确定你应该写一些测试,那么我至少会测试这些情况

  • 快乐路径(写好对象,然后检查文件内容)
  • null参数会发生什么(文件存在?它里面有什么?它会被关闭吗?)
  • 如果多次调用该方法会怎样?
  • 如果文件已存在但无法写入会发生什么

答案 1 :(得分:2)

问题的答案“我应该测试一下吗?”总是“是”。现在,您可能无法或可能不知道如何,或没有时间,或被允许或想要,但这不会改变答案。

答案 2 :(得分:2)

总是欢迎测试,但在这种情况下,彻底的代码审查可能会有所帮助。编写一个能够发现的测试很难:

  • out可能无法正常关闭,导致文件描述符泄露,即当o.toString()抛出异常时

  • 如果它会抛出异常,堆栈跟踪将丢失(错误的异常处理)

  • 如果Object o没有覆盖toString()它应该关心,该方法应该如何表现?

答案 3 :(得分:1)

还有一些代码审核建议:out.close()应该在finally块中(有自己的try / catch),您可能需要检查输入参数是否合理,您可能需要检查如果文件已存在且可写。另外,如果oString并且有自己的换行符,会发生什么?