2016-04-26 10 views
0

Androidアプリケーションのデータベースを正しくテストする方法が少し失われています。 SQLiteOpenHelperを拡張したデータベースハンドラがあります。このクラスを嘲笑するアドバイスもありますが、どうすればデータベースの別のインスタンスが得られますか?私もin-memory SQLite databaseを使用するための提案が表示されますが、それは不必要なジャグリングの多くのようです...Androidのユニットテストとデータベースハンドラ

私のデータベースをテストするにはどうすればよいですか?どんな助けもありがたい。

答えて

1

これは私が私のデータベースライブラリのためにした方法です:

public class TestDatabaseManager extends AndroidTestCase { 

    HrSuiteDatabaseManager dbm; 

    public void setUp() throws Exception { 
     super.setUp(); 

     RenamingDelegatingContext rdcontext = new RenamingDelegatingContext(getContext(), "test_"); 
     dbm = new HrSuiteDatabaseManager(rdcontext); 
     dbm.registerTableAccess(new EmployeeAccess()); 
    } 

    public void testInsertion() { 
     EmployeeAccess ea = dbm.getEmployeeAccess(); 
     ea.insert(createEmployee(0)); 

     List<Employee> emps = ea.getAll(); 
     assertEquals(1, emps.size()); 

     assertEmployee(emps.get(0), 0); 
    } 
} 

ここで重要なのは、指定された接頭辞で、データベースファイルを作成するクラスRenamingDelegatingcontextです。

HrSuiteDatabaseManagerは、SQLiteOpenHelperに由来しています。 RenamingDelegatingcontextを使用してインスタンス化し、通常のテストケースで使用します。

関連する問題