2016-08-01 6 views
5

मैं एंड्रॉयड में इकाई परीक्षण मैं एक विधि का उपयोग करता है परीक्षण करने के लिए कोशिश कर रहा है के साथ काम करने शुरू कर:android.util.Patterns यूनिट परीक्षण, NullPointerException

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

यह सच लौटना चाहिए के रूप में मैं इस जोड़ा मेरा 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()); 
} 

जब एंड्रॉइड.यूटल्स पर टिप्पणी की जाती है तो उनकी कोई अपवाद नहीं होगी।

+0

अपना कोड दिखाएं। –

+1

मैं तुम्हारा दोस्त नहीं हूँ। और यह जानने में मदद कर सकता है कि एनपीई क्या है। अब आपको एक डिबगर का उपयोग करना है, यह पता लगाने के लिए कि कौन सा मान शून्य है – Jens

+1

मुझे एक ही समस्या का सामना करना पड़ रहा है। इसके खिलाफ प्रयास करने और मैच करने के लिए आपको आमतौर पर पैटर्न को नकल करने की आवश्यकता होगी। हालांकि आप आसानी से ऐसा नहीं कर सकते हैं। यह ट्यूटोरियल बहुत अच्छा है: (http://bytes.babbel.com/en/articles/2016-05-20-tdd-in-android.html) और इसे चरणबद्ध तरीके से दिखाएं कि यह कैसे काम कर रहा है –

उत्तर

1

static methods मजाक नहीं किया गया है। आपको mockito या powermock जैसे कुछ मॉकिंग फ्रेमवर्क का उपयोग करने की आवश्यकता है।

+0

कंधे ' यह हमेशा सच नहीं होता http://tools.android.com/tech-docs/unit-testing-support अंतिम अनुभाग –

संबंधित मुद्दे