【发布时间】:2019-04-26 05:59:48
【问题描述】:
我的 Spring Boot 应用程序中有以下代码,用于验证电子邮件地址
class EmailValidation {
public static void validate(List<String> s){
try {
for (String address : s) {
if (s == null || s.indexOf("@") < 0) {
throw new InvalidEmailAddressException("Email address is invalid ");
}
new InternetAddress(s);
}
} catch(AddressException e){
LOGGER.Error("Please validate email addresses");
}
catch(InvalidEmailAddressesException e){
LOGGER.error(e.getMessage());
}
}
class InvalidEmailAddressException extends Exception {
public InvalidEmailAddressException(String message) {
super(message)
}
}
}
我想编写一个 Junit 测试来验证 InvalidEmailAddressesException 是否被抛出并被 CAUGHT。如何在 JUnit 中做到这一点?
【问题讨论】:
-
为什么需要这样的测试?如果抛出异常并且该异常存在
catch,它将被捕获。它不可能绕过那个 catch 块。你想完成什么? -
好吧,对于初学者,您首先不会将异常用于非异常条件。输入无效电子邮件的人并非异常行为。您将异常用作正常控制流的一部分,但它们并非用于此目的。
-
上面的 cmets 已经暗示了这一点,但是您要测试的是内部 java 行为,例如当抛出异常时,该异常被捕获。已经写了许多测试:) 你粘贴的 sn-p 也有一些问题,但我假设这些是复制粘贴错误:)
-
您不应该测试内部实现细节。你测试行为。在这种情况下,您唯一可以测试的是记录了错误。为什么你的方法会创建一个
InternetAddress却什么也不做呢?
标签: java spring junit exception-handling