gpt4 book ai didi

java - 如何测试方法内部捕获的异常?

转载 作者:行者123 更新时间:2023-12-01 22:38:45 24 4
gpt4 key购买 nike

所以我编写了如下所示的临时方法:

public void tempMethod(String invalidCode) {
try {
long temp = Long.valueOf(invalidCode);
} catch (NumberFormatException ex) {
System.err.println("Wrong code format, code must contains numbers only. Your wrong code: " + invalidCode);
}
}

我想用 JUnit 4.10 为其编写测试。问题是我在网上找到的解决方案无法对其进行测试。直到现在我还没有真正编写过任何测试,所以这个问题可能很愚蠢。

这是我尝试过的:

@Test(expected = NumberFormatException.class)
public void testEx() {
testInstance.tempMethod("asd");
}

这表明测试失败,但输出中出现异常消息。我尝试使用

进行测试
@Rule
public ExpectedException expectedEx = ExpectedException.none();

但这也不适用于这种情况。

是否有任何选项可以在不更改 tempMethod 主体的情况下检查此方法?

最佳答案

你的方法没有抛出异常,这就是测试失败的原因。

你看,当在方法内抛出异常并捕获时,你实际上已经处理了该异常:程序员认为该异常并不重要,只是打印它,而不抛出进一步或停止执行。

因此测试这一点的唯一方法是检查标准错误流以查看是否写入了适当的字符串。一旦 catch block 关闭,异常就会消失。

关于java - 如何测试方法内部捕获的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26513855/

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