我想对我创建的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测试
答案 0 :(得分:0)
我不确定这是个好主意。 ORMLite具有非Android JDBC包,可用于直接通过JDBC驱动Sqlite。但是,如果目标是测试您的Android数据库类,那么您将运行许多非Android代码,在我看来,这将使测试无效。我被认为是在嘲笑所有Android类,但它不久就开始成为一个扭曲通道的迷宫。
我认为你最好的方法就是忍受Android junit测试。请查看ORMLite Android test package files示例。 [BaseDaoTest文件]具有您可以为自己的测试自定义的所有设置/关闭方法。