我开始在Android的 单元测试,我已经试图测试使用的方法工作:android.util.Patterns单元测试返回NullPointerException异常
android.util.Patterns.EMAIL_ADDRESS.matcher(validEmail).matches()
,因为我加入这应该返回true我的build.gradle
testOptions {
unitTests {
returnDefaultValues = true
}
}
仍然测试抛出一个NullPointerException。
我有两个问题: 1-我该如何解决这个问题?我应该重新考虑我的设计并将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被评论时,它们也不会例外。
显示您的代码。 –
我不是你的家伙。这可能有助于了解NPE是什么。现在你必须使用一个调试器来找出什么值为null – Jens
我正面临同样的问题。你通常需要嘲笑该模式,以尝试与之匹配。但是你不能轻易做到这一点。 本教程相当不错:(http://bytes.babbel.com/en/articles/2016-05-20-tdd-in-android.html)并逐步展示如何让它工作 –