android.util.Patterns单元测试返回NullPointerException

时间:2016-08-01 07:12:41

标签: android unit-testing junit4

我开始在android中使用单元测试 我试图测试一个使用的方法:

android.util.Patterns.EMAIL_ADDRESS.matcher(validEmail).matches()

它应该返回true,因为我在build.gradle

中添加了它
testOptions { 
    unitTests {
        returnDefaultValues = true
    }
} 

测试仍会抛出NullPointerException。

我有两个问题: 1-我该如何解决这个问题? 2-我应该重新考虑我的设计并将android依赖项移除到模拟对象。

// @ LoginPresenterTest
@Test
public void clickOnLogin_loginSuccess(){
    loginPresenter.login(validEmail, validPassword);
    verify(loginView).setLoginButton(false);
}
// LoginPresenter
public void login(String email, String password) {

    loginView.setLoginButton(false);
    if(!isValid(email, password)){
        loginView.setLoginButton(true);
        return;
    }
}
// Validation
public static boolean isEmailValid(String email){
    return !(email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches());
}

当评论android.utills时,他们也不例外。

1 个答案:

答案 0 :(得分:3)

static methods没有被嘲笑。您需要使用一些模拟框架,例如mockitopowermock