我可以在包含的应用程序之外使用ORMlite / SQLite

时间:2012-07-04 07:55:47

标签: android sqlite ormlite

我想对我创建的DatabaseService类进行单元测试(修改了我在网上找到的WishList应用程序)         package 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所需的Context传入? 理想情况下,我想将此类作为标准JUnit测试进行单元测试,而不是Android JUnit测试

1 个答案:

答案 0 :(得分:0)

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

我认为你最好的方法就是忍受Android junit测试。请查看ORMLite Android test package files示例。 [BaseDaoTest文件]具有您可以为自己的测试自定义的所有设置/关闭方法。