验证电子邮件时出现NullPointerException

时间:2016-05-18 14:33:20

标签: java android android-studio junit junit4

我正在编写一个单元测试来检查电子邮件验证逻辑。运行测试时,逻辑是抛出空指针异常。但它适用于模拟器。有人可以帮我解决这个问题吗?

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)

3 个答案:

答案 0 :(得分:2)

自API级别8以来

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