我正在编写一个单元测试来检查电子邮件验证逻辑。运行测试时,逻辑是抛出空指针异常。但它适用于模拟器。有人可以帮我解决这个问题吗?
public static String validate(String email, String password) {
if (email == null || email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
return "Enter valid email address";
}
if (password.isEmpty() || password.length() < 4) {
return "Password should be between 4 and 10 alphanumeric characters";
}
return null;
}
以下是我的单元测试。
@Test
public void validateShouldReturnMessageIfYouPassAnInvalidEmail() throws Exception {
String validateMessage = LoginService.validate("abcdef", "password");
assertEquals("Enter valid email address", validateMessage);
}
我得到的错误是,
java.lang.NullPointerException
at com.tryout.hemanth.expensetracker.service.LoginService.validate(LoginService.java:11)
答案 0 :(得分:2)
android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()
存在,可能是您的模拟器在此之前。
所以我建议按照this回答中的建议添加自定义EMAIL_ADDRESS_PATTERN
字符串,并将其检查为
if (email == null || email.isEmpty() || !EMAIL_ADDRESS_PATTERN.matcher(email).matches()){
return "Enter valid email address";
}
答案 1 :(得分:2)
请不要使用 Patterns.EMAIL_ADDRESS 。
正在使用复杂的正则表达式来验证电子邮件。
创建自己的正则表达式以便更好地使用。
答案 2 :(得分:2)
使用 PatternsCompat 代替 Patterns