如何为输入流类编写Junit

0 java junit fileinputstream

如何为此编写Junit?

当我调试它时,我englishFile在行中得到了Null englishFile = new FileInputStream(fileName);

    String langCode = getLanguageCode();
    String fileName = "appQuestion_"+langCode+".properties";
    FileInputStream englishFile = null;
    try {
        englishFile = new FileInputStream(fileName);
        engProperties.load(englishFile);
    } catch (Exception e) {

    } finally {
        if (null != englishFile) {
            englishFile.close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

pio*_*rek 5

您至少有4个选择

  1. 使用powermock

    丑陋,缓慢,在许多公司中都禁止使用,允许您编写不良代码,但功能强大

  2. 做整合测试

    准备文件,环境变量,并检查没有此类文件时代码的行为。速度很慢,但可以让您在现实世界中测试该代码

  3. 重构代码以适合单元测试

    移至new其他类(工厂),移至.load其他类(environmentProvider)并在测试中模拟那些类。您将获得快速测试,但必须更改设计。有些人认为它将强制执行良好的设计,有些人则认为测试不应对设计产生影响。

  4. 不要测试。

    也许代码是如此之小,没有业务逻辑,不会经常更改,将由测试人员手动测试。因此,测试它可能会浪费金钱。那是简单但有风险的解决方案

我建议您在2,3,4的某种混合之间进行选择,具体取决于此代码的关键程度,更改的频率,更复杂的代码以及应用程序应该执行的操作。测试与外界的交互通常在设计(复杂性,可读性等),速度和风险之间进行权衡。