2016-08-01 9 views
5

Ich fange in android mit Unit-Tests arbeiten ich eine Methode zu testen, haben versucht, die verwendet:android.util.Patterns Unit-Test liefert Nullpointer

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

sollte true zurückgeben, wie ich diese hinzugefügt mein build.gradle

testOptions { 
    unitTests { 
     returnDefaultValues = true 
    } 
} 

Noch der Test löst eine NullPointerException. Ich habe zwei Fragen: 1- Wie behebe ich das? 2- Sollte ich mein Design überdenken und die Android-Abhängigkeit zu einem Mock-Objekt entfernen.

// @ 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()); 
} 

Wenn android.utils kommentiert wird, wird dies keine Ausnahme sein.

+0

Ihren Code anzeigen. –

+1

Ich bin nicht dein Typ. Und es kann helfen zu wissen, was eine NPE ist. Jetzt müssen Sie einen Debuggeer verwenden, um herauszufinden, welcher Wert null ist – Jens

+1

Ich stehe vor dem gleichen Problem. Normalerweise müssten Sie das Muster nachahmen, um zu versuchen, dagegen zu spielen. Allerdings kann man das nicht leicht machen. Dieses Tutorial ist ziemlich gut: (http://bytes.babbel.com/de/articles/2016-05-20-tdd-in-android.html) und zeigen Schritt für Schritt, wie es funktioniert –

Antwort

1

static methods sind nicht verspottet. Sie müssen etwas spöttisches Framework wie mockito oder powermock verwenden.

+0

sollte nicht ' t dies immer wieder wahr http://tools.android.com/tech-docs/unit-testing-support Letzter Abschnitt –