2011-11-20 70 views
3

任何人都可以幫助我解決這個問題:如何測試使用ormlite的android應用程序?如何測試android與ormlite項目

我想知道如何創建模擬道路。此代碼讓我一個DAO

public Dao<Account, Integer> getAccountDao() throws SQLException { 
    if (accountDao == null) { 
     accountDao = getDao(Account.class); 
    } 
    return accountDao; 
} 

我的測試活動中查找此:

public class OrmActivity extends OrmLiteBaseActivity<DatabaseHelper> { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     initUi(); 
     initUiListeners(); 

     RuntimeExceptionDao<Account, Integer> accountDao = getHelper().getAccountDataDao(); 
     Account account = new Account(); 
     account.setName("name"); 
     account.setPassword("password"); 
     accountDao.create(account); 
    } 

我不想做檢查創建單獨的數據庫。我想用它來模仿它。

致以問候

回答

3

我使用Robolectric進行Android應用程序的單元測試。適用於RoboGuice和Ormlite。 Robolectric創建自己的數據庫,因此單元測試不會修改您正在測試的設備上的數據庫。

如果這不能回答你的問題,請澄清你的問題。比如,如何不使用與使用模擬道相關的單獨數據庫?

+0

THX的答覆,我會檢查它 – reizals

+0

@christine - 你的roboelectric一個示例代碼和ormlite共同努力 – rOrlig

+0

我在這裏蓋了示例代碼:www.christine.nl – Christine

3

只是爲了防止其他人絆倒這個職位。我遇到的問題是您需要一個活動的實例,以便您可以將上下文傳遞給OpenHelperManager.getHelper(android.content.Context上下文,Class openHelperClass)方法的

爲了解決這個問題,我創建了一個ActivityInstrumentationTestCase2測試類來提供上下文。你可以使用MockContext但我明白這是有問題的。這種方式是簡單的愚蠢,有點:)

在這一點上,我不打擾測試任何活動功能,只是數據庫功能。

public class TestActivity extends ActivityInstrumentationTestCase2<MainFragment> { 

    public TestActivity() { 
     super(MainFragment.class); 
    } 

    protected void setUp() throws Exception { 
     super.setUp(); 
     //DatabaseHelper.class is the extended OrmLiteSqliteOpenHelper class 
     OpenHelperManager.getHelper(getActivity(), DatabaseHelper.class); 
    } 

    protected void tearDown() throws Exception { 
     OpenHelperManager.releaseHelper(); 
     super.tearDown(); 
    } 

    public void testDetailDiscount() { 
    //Example code using an entity class that encapsulates ormlite functionality 
     double total = 95 * 5; 
     DocumentDetail detail = DocumentDetail.create(getActivity()); 
     assertEquals(total, detail.getTotal()); 
    } 
} 

希望它可以幫助