2012-02-03 16 views
0

インテントでエクストラとして送信される内容に応じてデータベースを挿入または更新するアクティビティのテストを書く必要があります。このアクティビティをテストするには、最初にデータベースをセットアップして、重複する鍵やその他のデータベース関連の問題を解決する必要があります。テストの作成時にアクティビティを初期化する前にデータベースを設定してください

問題は、データベースを設定するために、私はコンテキストが必要で、コンテキストを取得する方法を知っている唯一の方法は、getActivity()を呼び出すことですが、アクティビティのセットアップ前にデータベースを読み込みます。

ActivityInstrumentationTestCase2のサブクラスを使用すると、アクティビティを初期化する前にデータベースを設定できますか?

私が何をしたいのかのpsedudo-exampel。事前 ローランド

答えて

1

私はあなたがセットアップで行う必要が正確に何を知らないで

public void testActivityWithDatabaseEmpty(){ 
    //Setup database 
    SQLLiteDatabase myDb = getDatabase(); // how to do this in a test without first calling the activity? 
    emptyTestTable(myDb); 

    //Setup intent 
    Intent intent = getIntentWithNonExistingKey(); 
    setActivityIntent(intent); 

    //Get activity 
    MyActivity activity = getActivity(); 
    Button button = activity.findById(R.id.button); 
    assertAreEquals("", button.getText); 
} 

おかげで、しかし、1つのアプローチは、コンテキストとしてアプリケーションを使用することができます。個人的に私のテストでは、あなたの状況に該当するかどうかわからない、特別なデータベース名を使用する道がありました。私はこれにこれを記述しましたblog post

関連する問題