Java的不良做法:将return语句仅方法进行测试?

问题描述 投票:0回答:1

它是不好的做法,增加一个return语句用于测试方法的唯一目的,没有实际的代码本身使用它吗?

作为一个例子的情况下,我测试的读出方法,其后面是一系列的,最终产生具有吸收了它在读取文件的线的属性的对象的方法。

从我的理解,读取方法可以使用的Mockito,而无需添加return语句进行测试。或者一个可以测试另一种方法(readPerLine)是否被调用,但我还没有找到一个合适的测试程序来做到这一点。这两个选项可能意味着,如果正确的编码过程中,如果是的话请让我知道我的一般问题是不相关的。

不过目前以下两个选项似乎是最简单的方式来测试(部分)的读法:

  1. 添加包含其在方法结束时执行读取的方法中的线,的阵列的返回语句。
  2. 测试读取方法和通过测量对象的属性是否正确创建对象的后续方法的结合。并通过试验随访方法分别。这不是优选的,因为在读法的双重错误,1和1的后续方法的概念设计在测试过程中可能会取消,但是会导致读取错误的生活。
  3. 修改(读出)方法,使得它返回线,其被传递到从主跟进方法的阵列。

我目前写的读取方法的一个例子的代码:

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();
        }
    }

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

  • 我知道有时你需要重写你的方法,以允许进行测试。
  • 但我不知道,不使用实际的代码,但仅用于测试增加功能,如return语句是否是好还是不好的做法。此外,如果我这样做,我还是不完全测试读取方法,调用其他方法仍不能测试。
  • 还是,如果我在第一时间运用适当的礼仪不应该出现在所有这一难题。
java unit-testing testing
1个回答
1
投票

我建议,而不是添加return语句的方法,以使测试,而返工,分离一部分的功能的方法。

我认为这个问题是在这里:

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

也许你正在做的这个方法太多了。你可以将其分为几种不同的方法,例如:

  1. 读取的行,以获得一个字符串数组
  2. 执行字符串转换为正确的数据类型
  3. 建立你的对象,并设置其属性

如果你这样做,你可以检查每一步的功能,并为每个测试。当涉及到测试的主要方法readFile(String filename),您就可以使用Mokito检查每个方法被调用使用正确的参数

© www.soinside.com 2019 - 2024. All rights reserved.