Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
Android 我可以在包含应用程序的外部使用ORMlite/SQLlite吗_Android_Sqlite_Ormlite - Fatal编程技术网

Android 我可以在包含应用程序的外部使用ORMlite/SQLlite吗

Android 我可以在包含应用程序的外部使用ORMlite/SQLlite吗,android,sqlite,ormlite,Android,Sqlite,Ormlite,我想对一个DatabaseService类进行单元测试,该类是我创建的,修改了我在网上找到的一个愿望列表应用程序 包com.test.db import java.sql.SQLException; import java.util.List; import android.content.Context; import com.test.model.WishList; public class WishListService {

我想对一个DatabaseService类进行单元测试,该类是我创建的,修改了我在网上找到的一个愿望列表应用程序 包com.test.db

    import java.sql.SQLException;
    import java.util.List;
    import android.content.Context;
    import com.test.model.WishList;

    public class WishListService
    {
        private static WishListService instance;

        public static void init(Context ctx)
        {
            if (null == instance)
            {
                instance = new WishListService(ctx);
            }
        }

        static public WishListService getInstance()
        {
            return instance;
        }

        private DatabaseHelper helper;

        private WishListService(Context ctx)
        {
            helper = DatabaseHelper.getInstance(ctx);
        }

        public List<WishList> getAllWishLists()
        {
            List<WishList> wishLists = null;
            try
            {
                wishLists = helper.getWishListDao().queryForAll();
            } catch (SQLException e)
            {
                e.printStackTrace();
            }
            return wishLists;
        }

        public void addWishList(WishList l)
        {
            try
            {
                helper.getWishListDao().create(l);
            } catch (SQLException e)
            {
                e.printStackTrace();
            }
        }

        public WishList getWishListWithId(int wishListId)
        {
            WishList wishList = null;
            try
            {
                wishList = helper.getWishListDao().queryForId(wishListId);
            } catch (SQLException e)
            {
                e.printStackTrace();
            }
            return wishList;
        }

        public void deleteWishList(WishList wishList)
        {
            try
            {
                helper.getWishListDao().delete(wishList);
            } catch (SQLException e)
            {
                e.printStackTrace();
            }
        }


        public void updateWishList(WishList wishList)
        {
            try
            {
                helper.getWishListDao().update(wishList);
            } catch (SQLException e)
            {
                e.printStackTrace();
            }
        }

    }
我的问题是,是否有任何方法可以实例化DatabaseHelper,而不必创建测试活动并将其作为DatabaseHelper所需的上下文传递?
理想情况下,我希望将这个类作为标准JUnit测试进行单元测试,而不是Android JUnit测试

我不确定这是一个好主意。具有非Android JDBC包,可用于通过JDBC直接驱动Sqlite。然而,如果目标是测试您的Android数据库类,那么您将运行大量非Android代码,在我看来,这些代码将使测试无效。我被认为是在模仿所有的Android类,但不久之后它就开始变成一个迷宫般的扭曲通道


我认为你最好的方法是忍受Android junit测试。请看下面的示例。[BaseDaoTest文件]具有所有设置/关闭方法,您可以为自己的测试自定义这些方法。

假设DatabaseHelper是SQLiteOpenHelper的子类,您可以向其传递模拟上下文,例如android.test.mock.MockContext,并通过调用SQLiteDatabase.openOrCreateDatabase..&返回结果。是否仍需要在模拟器或物理设备中运行?理想情况下,我不希望对android设备有任何依赖性。SQLiteDatabase有很多本机函数,所以您仍然可以在模拟器上运行。