2011-11-20 75 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()); 
    } 
} 

希望它可以帮助