Java不好的做法:将return语句添加到仅用于测试的方法?

仅出于测试方法而不在实际代码本身中使用它的目的而添加 return 语句是不好的做法吗?

作为一个示例,我正在测试一个 read 方法,然后是一系列方法,这些方法最终创建了一个对象,该对象的属性从它正在读取的文件的行中吸收。

据我了解,可以使用 Mockito 测试读取方法,而无需添加返回语句。或者可以测试是否readPerLine调用了另一种方法 ( ),但我还没有找到合适的测试程序来做到这一点。如果使用正确的编码程序,这两个选项可能意味着我的一般问题不相关,如果是,请告诉我。

然而,目前以下两个选项似乎是测试(部分)读取方法的最简单方法:

  1. 添加一个 return 语句,其中包含该方法读入的行数组,该语句在方法结束时执行。

  2. 通过测量对象的属性是否正确来测试读取方法和创建对象的后续方法的组合。并通过单独测试后续方法。这不是首选,因为双重错误,读取方法中的 1 和后续方法的概念设计中的 1 可能会在此测试期间抵消,但会导致读取寿命错误。

  3. 修改 (read) 方法,使其返回一个行数组,该数组从 Main 传递给后续方法。

我目前编写的 read 方法的示例代码:

public void readFile(String filename) {

        FileReader reader;

        BufferedReader br;

        String line = null;

        try {       

            br = new BufferedReader(new FileReader(filename));


            while ((line = br.readLine()) != null) {

                readPerLine(line); //converts line into properties for an object.

            }  

            br.close();

        } catch (FileNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

所以我还没有解决下面的困境;

  • 我知道有时您需要重写您的方法以进行测试。

  • 但我不知道添加功能,例如实际代码未使用但仅用于测试的返回语句,是好还是坏的做法。另外,如果我这样做,我仍然没有完全测试读取方法,调用另一个方法仍然没有测试。

  • 或者,如果我首先应用适当的礼仪,是否根本不应该出现这种困境。


繁星点点滴滴
浏览 78回答 1
1回答

三国纷争

我建议不要在方法中添加 return 语句来启用测试,而是重新设计方法以分离一些功能。我认为问题出在这里:readPerLine(line); //converts line into properties for an object.也许你在这种方法上做得太多了。您可以将其分解为几种不同的方法,例如:读取该行以获取一个 String 数组将字符串转换为正确的数据类型构建你的对象并设置它的属性如果您这样做,您可以检查每个步骤的功能并为每个步骤进行测试。在测试 main 方法readFile(String filename)时,您可以使用 Mokito 检查是否使用正确的参数调用了每个方法
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java