2017-05-18 8 views
0

私はテストに新しいです、そして、私はこの問題を抱えています。static final finalフィールドの内部メソッドにアクセスするテストメソッドは、エラーを返します

これは

ソースファイル----->

import android.util.Patterns; 

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class CommonFunctions { 

    private Context context; 

    public CommonFunctions(Context context) { 
     this.context = context; 
    } 


    //to check whether email is valid or not 

    public boolean isEmailValid(String email) { 
     Pattern pattern = Patterns.EMAIL_ADDRESS; 
     Matcher matcher = pattern.matcher(email); 
     return matcher.matches(); 
    } 

} 

"Patterns.EMAIL_ADDRESSは" android.util.Patterns EMAIL_ADDRESSからである電子メールの検証のための方法が含まれていCommonFunctionsの私のクラスですstatic finalフィールド


私のテストコード使用してJUnitのとMockito

import android.content.Context; 

    import org.junit.Test; 
    import org.junit.runner.RunWith; 
    import org.mockito.Mock; 
    import org.mockito.runners.MockitoJUnitRunner; 

    import static org.hamcrest.CoreMatchers.is; 
    import static org.junit.Assert.*; 


    @RunWith(MockitoJUnitRunner.class) 
    public class CommonFunctionsTest { 

    @Mock 
    Context mMockContext; 


    @Test 
    public void isEmailValid() throws Exception { 

     CommonFunctions commonFunctions = new CommonFunctions(mMockContext); 
     assertThat(commonFunctions.isEmailValid("[email protected]"), is(true)); 

    } 

} 

エラー:この行でのjava.lang.NullPointerException:CommonFunctionクラス

'パターン' のisEmailValid方法で

Matcher matcher = pattern.matcher(email); 

はそれをテストしながら、つまりまだ

nullですandroid.util.Patternsから「Patterns.EMAIL_ADDRESS」にアクセスできません。EMAIL_ADDRESSは静的最終フィールドです。

ありがとうございます事前に

答えて

2

"Patterns.EMAIL_ADDRESSは" から .Patterns android.utilある

あなたは(/testで)標準ユニットテストとしてこれを作成している場合は、JUnitのは、Androidを使用していませんフレームワーク。 Android固有のメソッドはすべてスタブされ、実行に失敗します。

自分でPatterns.EMAIL_ADDRESSを定義するか、/androidTestのInstrumentationテストとしてこのテストを実行する必要があります。また、Robolectricを使用して、ローカルJUnitテストで使用するAndroid SDKの実装を提供していますので、こちらをご覧ください。

関連する問題