Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ormlite项目测试android_Android_Junit_Ormlite - Fatal编程技术网

如何使用ormlite项目测试android

如何使用ormlite项目测试android,android,junit,ormlite,Android,Junit,Ormlite,任何人都可以帮我解决这个问题:如何测试使用ormlite的android应用程序 我想知道如何从dao创建模拟。这个代码给了我一把刀 public Dao<Account, Integer> getAccountDao() throws SQLException { if (accountDao == null) { accountDao = getDao(Account.class); } return accountDao; } publ

任何人都可以帮我解决这个问题:如何测试使用ormlite的android应用程序

我想知道如何从dao创建模拟。这个代码给了我一把刀

public Dao<Account, Integer> getAccountDao() throws SQLException {
    if (accountDao == null) {
        accountDao = getDao(Account.class);
    }
    return accountDao;
}
public Dao getAccountDao()引发SQLException{
if(accountDao==null){
accountDao=getDao(Account.class);
}
返回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);
    }
公共类或活动扩展了OrmListeBaseActivity{
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initUi();
initUiListeners();
RuntimeExceptionDao accountDao=getHelper().getAccountDataDao();
账户=新账户();
账户。设置名称(“名称”);
帐户设置密码(“密码”);
accountDao.create(account);
}
我不想为测试创建单独的数据库。相反,我想使用mock


致以最诚挚的问候

我使用Robolectric对Android应用程序进行单元测试。与RoboGuice和Ormlite配合使用效果良好。Robolectric创建自己的数据库,因此单元测试不会修改正在测试的设备上的数据库


如果这不能回答您的问题,请澄清您的问题。例如,如何不使用与使用mock dao相关的单独数据库?

以防其他人偶然发现此帖子。我遇到的问题是,您需要一个活动实例,以便将上下文传递给OpenHelperManager.getHelper(android.content.Context,类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());
    }
}
公共类测试活动扩展了ActivityInstrumentationTestCase2{
公开测试性{
super(MainFragment.class);
}
受保护的void setUp()引发异常{
super.setUp();
//DatabaseHelper.class是扩展的OrmLiteSqliteOpenHelper类
OpenHelperManager.getHelper(getActivity(),DatabaseHelper.class);
}
受保护的void tearDown()引发异常{
OpenHelperManager.releaseHelper();
super.tearDown();
}
公共void testDetailDiscount(){
//使用封装ormlite功能的实体类的示例代码
双倍合计=95*5;
DocumentDetail=DocumentDetail.create(getActivity());
assertEquals(total,detail.getTotal());
}
}

希望对你有所帮助

@christine-你有机器人电气和奥姆莱特工作的示例代码吗together@Christine你能把链接放在这里让任何人都能找到吗?