1

私のContentProviderはDogProviderと呼ばれています。インストルメンテーションテストのスケルトンを設定するにはどうすればよいですか?私が以下を実行しようとすると、私はいつもnullのMockContentResolverで終わります。あなたのテストでContentProviderの計測テストを実行

import org.junit.Test; 
import org.junit.runner.RunWith; 

import android.content.ContentProvider; 
import android.database.Cursor; 
import android.net.Uri; 
import android.support.test.runner.AndroidJUnit4; 
import android.support.test.filters.LargeTest; 
import android.test.ProviderTestCase2; 
import android.support.test.InstrumentationRegistry; 
import android.test.mock.MockContentResolver; 

import com.bus.proj.data.DogContract; 
import com.bus.proj.data.DogProvider; 

@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class ContentProviderTest extends ProviderTestCase2<DogProvider>{ 

    public ContentProviderTest() { 
     super(DogProvider.class, DogContract.CONTENT_AUTHORITY); 
    } 

    @Override 
    protected void setUp() throws Exception{ 
     setContext(InstrumentationRegistry.getTargetContext()); 
     super.setUp(); 
    } 

    @Test 
    public void emptyQuery(){ 
     MockContentResolver contentResolver = getMockContentResolver(); 
     assertNotNull(contentResolver);//fail happens here 
     Uri uri = DogContract.DogEntry.CONTENT_URI; 
     Cursor cursor = contentResolver.query(uri,null,null,null,null); 
    } 

} 

答えて

1

ます(メソッド名に基づいたJUnit3に比べて)、アノテーションに基づいてAndroidJunit4テストランナーを、使用しています。

これは、おそらく、あなたのsetUpメソッドが呼び出されていない可能性があることを意味します。各テストの前に呼び出すには、@Beforeアノテーションを使用してメソッドを公開する必要があります。

@Before 
@Override 
public void setUp() throws Exception{ 
    setContext(InstrumentationRegistry.getTargetContext()); 
    super.setUp(); 
} 
関連する問題