2016-08-01 2 views
5

Я начинаю работать с модульными тестами в андроиде я пытаюсь проверить метод, который использует:тест android.util.Patterns блок возвращает NullPointerException

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

она должна возвращать верно, как я добавил это в my build.gradle

testOptions { 
    unitTests { 
     returnDefaultValues = true 
    } 
} 

Все еще тест выдает исключение NullPointerException.

У меня есть два вопроса: 1- Как исправить это? 2- Должен ли я пересмотреть свой дизайн и удалить зависимость андроида от макетного объекта.

// @ 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

показать свой код. –

+1

Я не твой чувак. И это может помочь узнать, что такое NPE. Теперь вам нужно использовать debuggeer, чтобы узнать, какое значение null – Jens

+1

У меня такая же проблема. Обычно вам нужно высмеивать шаблон, чтобы попытаться сопоставить его. Однако вы легко можете это сделать. Этот урок довольно хорош: (http://bytes.babbel.com/ru/articles/2016-05-20-tdd-in-android.html) и покажите шаг за шагом, как заставить его работать –

ответ

1

static methods не издеваются. Вам нужно использовать какую-то насмешливую структуру, например mockito или powermock.

+0

shouldn ' t это всегда возвращает true http://tools.android.com/tech-docs/unit-testing-support Последний раздел –