繁体   English   中英

JUnit 不向主方法 Java 传递参数

[英]JUnit Passing No arguments to main Method Java

我正在尝试测试我的 main 方法(它应该只接受一个参数)是否没有传递参数。 似乎无法理解我在这里缺少什么来实现这一点。我的程序的性质是它从文件中读取输入,通过传递从文件中读取的参数来创建对象,并显示输出。

失败信息:

org.junit.ComparisonFailure:预期:请传递一个参数

实际的 :

这是我的单元测试:

    @Test
    public void givenNoParameter_shouldAskForOne() throws IOException {
    String[] args = {};
    String output;

    try (ByteArrayOutputStream bOutput = new ByteArrayOutputStream()) {
        System.setOut(new PrintStream(bOutput));
        Main.main(args);
        bOutput.flush();
        output = bOutput.toString();
    }
    String newLine = System.getProperty("line.separator");
    String[] breakDownOutput = output.split(newLine);

    assertEquals(1, breakDownOutput.length);
    assertEquals("Please pass one argument", breakDownOutput[0]);
}

主要方法:

public static void main(String[] args) {

    if(args.length == 1) {
        DisplayOrder.setFilePath(args[0]);
        DisplayOrder.display();
    } else{
        System.err.println("Please pass one argument");
    }
}

我已经意识到我在我的主要使用 System.err.println() 。 将其更改为 System.out.println() 修复了它。

没有显示您的主要方法,我唯一的猜测是,您没有在您的主要内容中向“System.out”写入任何内容,尤其是没有System.out.println("Please pass one argument"); 执行的语句。 因此,对于“ breakDownOutput[0] ”中的非预期值,您的单元测试完全失败。

您需要做的是确保System.out.println("Please pass one argument"); 如果您的 main.js 没有提供任何参数,则执行。 还要检查您的类名Main.main(...)因为可能导入了其他Main类,它们永远不会将您的预期值打印到System.out

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM