我开始在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时,他们也不例外。
答案 0 :(得分:3)
static methods
没有被嘲笑。您需要使用一些模拟框架,例如mockito
或powermock
。