[英]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.