验证电子邮件时出现 NullPointerException
NullPointerException on validating email
我正在编写一个单元测试来检查电子邮件验证逻辑。当您 运行 测试时,逻辑会抛出空指针异常。但它在模拟器上运行良好。有人可以帮我解决这个问题吗?
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)
android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()
自 API 级别 8 以来存在,可能是您的模拟器早于此。
所以我建议按照 this 答案中的建议添加自定义 EMAIL_ADDRESS_PATTERN
字符串并检查它
if (email == null || email.isEmpty() || !EMAIL_ADDRESS_PATTERN.matcher(email).matches()){
return "Enter valid email address";
}
如果Patterns.EMAIL_ADDRESS不符合您的要求,
创建您的自己的正则表达式模式以便更好地使用。
示例请参考this EMAIL ADDRESS regex
使用 PatternsCompat 而不是 Patterns
试试这个,这对我有用:
fun isValidEmail(email:String?):Boolean {
return when{
email.isNullOrEmpty()-> false
else-> PatternsCompat.EMAIL_ADDRESS.matcher(email).matches();
}
}
测试用例:
@Test
fun validate_email_invalid() {
val email = "a"
Assert.assertEquals(false, isValidEmail(email))
}
我正在编写一个单元测试来检查电子邮件验证逻辑。当您 运行 测试时,逻辑会抛出空指针异常。但它在模拟器上运行良好。有人可以帮我解决这个问题吗?
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)
android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()
自 API 级别 8 以来存在,可能是您的模拟器早于此。
所以我建议按照 this 答案中的建议添加自定义 EMAIL_ADDRESS_PATTERN
字符串并检查它
if (email == null || email.isEmpty() || !EMAIL_ADDRESS_PATTERN.matcher(email).matches()){
return "Enter valid email address";
}
如果Patterns.EMAIL_ADDRESS不符合您的要求,
创建您的自己的正则表达式模式以便更好地使用。
示例请参考this EMAIL ADDRESS regex
使用 PatternsCompat 而不是 Patterns
试试这个,这对我有用:
fun isValidEmail(email:String?):Boolean {
return when{
email.isNullOrEmpty()-> false
else-> PatternsCompat.EMAIL_ADDRESS.matcher(email).matches();
}
}
测试用例:
@Test
fun validate_email_invalid() {
val email = "a"
Assert.assertEquals(false, isValidEmail(email))
}