0

私が作成した 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 が必要とする Context として渡すことなく、DatabaseHelper をインスタンス化する方法はありますか? 理想的には、このクラスを Android JUnit テストではなく、標準の JUnit テストとして単体テストしたい

4

1 に答える 1

0

これが良い考えかどうかはわかりません。 ORMLiteには、JDBC 経由で直接 Sqlite を駆動するために使用できる非 Android JDBC パッケージがあります。ただし、Android データベース クラスをテストすることが目的の場合、多くの非 Android コードを実行することになり、私の見解ではテストが無効になります。私はすべての Android クラスをからかっていると考えられていますが、やがてねじれた通路の迷路になり始めます。

続行するための最善の方法は、Android junit テストを我慢することだと思います。例として、ORMLite Android テスト パッケージ ファイルを見てください。[BaseDaoTest ファイル] には、独自のテスト用にカスタマイズできるセットアップ/シャットダウン メソッドがすべて含まれています。

于 2012-07-04T17:05:42.790 に答える