gpt4 book ai didi

java - 如何使用 jUnit 测试已处理的异常?

转载 作者:行者123 更新时间:2023-12-01 18:43:30 25 4
gpt4 key购买 nike

我是 jUnit 的新手。无法弄清楚如何测试已处理的异常。

 public File inputProcessor(String filePath){
File file = null;
try {
file = new File(filePath);
Scanner input = new Scanner(file);
} catch (FileNotFoundException e) {
System.out.print("Check your input file path");
e.printStackTrace();
}
return file;
}

现在,想要使用无效的文件路径进行测试,以检查是否抛出并正确捕获异常。我写了这个

@Test (expected = java.io.FileNotFoundException.class)
public void Input_CheckOnInvalidPath_ExceptionThrown() {
Driver driver = new Driver();
String filePath = "wrong path";
File file = driver.inputProcessor(filePath);
}

但是由于我已经发现了异常,所以它不起作用。测试失败。任何帮助都会很棒!谢谢

最佳答案

您需要测试方法的行为,而不是其实现细节。

如果你的方法的正确行为是在文件不存在时返回null,那么你只需要

@Test
public void Input_CheckOnInvalidPath_ExceptionThrown() {
Driver driver = new Driver();
String filePath = "wrong path";
assertNull(driver.inputProcessor(filePath));
}

如果您的方法的正确行为是在文件不存在时将特定消息打印到 System.out,并且您想要测试它,那么您可以创建一个模拟 PrintStream,使用 System.setOut(PrintStream) 设置它,调用您的方法,然后测试 PrintStream 是否被正确调用。也许 Mockito 可以帮助您做到这一点。我认为您存在测试 System.out.println() 与调用许多 System.out.print() 的实现细节的风险。 (您可能不应该测试 e.printStackTrace() 的实现方式。)

如果两者都是正确的行为,那么您需要进行这两项检查。

关于java - 如何使用 jUnit 测试已处理的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18944895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com