android studio Test类测试ormlite数据库问题
来源:互联网 发布:javascript setdate 编辑:程序博客网 时间:2024/05/19 14:16
今天初次使用ormlite包编写数据库项目,中间遇到教程中的一个问题,即编写测试类测试增删改查函数时
有一行代码DatabaseHelper helper = DatabaseHelper.getHelper(getContext()); 该代码在eclipse下能完整运行
可在android studio 下会出现一个问题 所getContext 为null。导致无法打开数据库文件。
网上解决方法有:
1 new MockContext();
2 getInstrument().getContext();
3Context appContext = InstrumentationRegistry.getTargetContext();
均不能解决问题最终context 仍为null;
解决思路是:
开始以为是路径权限有问题。
后来查出是:使用Android JUnit Test方式测试A工程。而A工程和Test工程 是两个独立的工程。
造成A工程建立了数据库,在Test工程中访问受限。
最终 解决办法是:好了!我要开始变身了!下面我们要向testing的世界say hello了!
我在package-name/module/main包下面有一个MainActivity,作为答疑君的启动页。在这个启动页上会显示一段文字,我希望通过自动化测试来确认这个文字确实显示在了屏幕上。
于是,我应该在androidTest/package-name/module/main下面创建一个AppStartActivityTest类,键入如下代码:
package im.dayi.app.student.module.main;import android.support.test.InstrumentationRegistry;import android.support.test.runner.AndroidJUnit4;import android.test.ActivityInstrumentationTestCase2;import android.widget.TextView;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;/** * Test for AppStartActivity * Created by Anchorer on 2016/1/13. */@RunWith(AndroidJUnit4.class)public class AppStartActivityTest extends ActivityInstrumentationTestCase2<MainActivity> { private MainActivity mActivity;//定义一个mainactivity类 public AppStartActivityTest() { // 所有的ActivityInstrumentationTestCase2子类都需要调用该父类的super(String)构造方法 super(MainActivity.class); } @Before public void setUp() throws Exception { super.setUp(); // @Before注解表示在执行所有的testCase之前要做的事情 injectInstrumentation(InstrumentationRegistry.getInstrumentation()); // getActivity()方法会在开始所有的testCase之前启动相应的Activity mActivity = getActivity(); // 获取MainActivity 的context DatabaseHelper helper = DatabaseHelper.getHelper(mActivity); } @Test public void testPreconditions() { // @Test注解表示一个测试用例方法 assertNotNull("AppStartActivity is null", mActivity); } }
其实质就是将MainActivity 作为参数传进Test类这样在类中调用DatabaseHelper helper = DatabaseHelper.getHelper(MainActivity);
即可将Test工程访问Main工程。
最终实现访问ormlite 数据库默认地址//data/data/com.exampel.ormlitedemo/databases/sqlite_test.db(我的地址)
- android studio Test类测试ormlite数据库问题
- Android数据库ORMlite框架
- android Ormlite数据库更新
- Android ORMLite数据库简介
- Android数据库使用(ORMLite)
- Android数据库ORMlite框架
- Android ORMLite数据库简介
- Android 数据库框架ormlite
- Android 数据库ORMLite用法
- Android数据库框架ORMLite
- Android ORMLite数据库详解
- android studio ormlite下事务处理
- Android studio快速开发ORMLite
- android测试类Test
- Android数据库开发之ORMLite
- Android 使用ORMLite 操作数据库
- Android 使用ORMLite 操作数据库
- Android 使用ORMLite 操作数据库
- 看图说话之二叉堆(优先队列)——java实现
- SpringMVC之拦截器(interceptors)的简介及用法
- leetcode题解-4. Median of Two Sorted Arrays
- HDU
- 将两个数组内容向中间靠拢交换
- android studio Test类测试ormlite数据库问题
- canvas save()和canvas restore()状态的保存和恢复使用方法及实例
- 十月培训
- Android学习《第一行代码》01
- 锁小结
- RecyclerView的基本使用
- BFS和DFS解决LeetCode133. Clone Graph
- C#字符串连接消耗
- JDBC连接 防止注入 事件 回滚