0

我想对我创建的 DatabaseService 类进行单元测试(修改了我在网上找到的 WishList 应用程序)包 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 测试

4

1 回答 1

0

我不确定这是个好主意。 ORMLite具有非 Android JDBC 包,您可以使用它直接通过 JDBC 驱动 Sqlite。但是,如果目标是测试您的 Android 数据库类,您将运行大量非 Android 代码,在我看来,这会使测试无效。我正在考虑嘲笑所有的 Android 类,但它很快就开始变成一个曲折的迷宫。

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

于 2012-07-04T17:05:42.790 回答