0
我想單元測試我創建的DatabaseService類(修改了我在線上找到的WishList應用程序) package com.test.db;我可以在包含應用程序之外使用ORMlite/SQLlite
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測試
**假設**你的「DatabaseHelper」是「SQLiteOpenHelper」的一個子類,你可以給它傳遞一個_mock context_,例如, 'android.test.mock.MockContext'並通過調用'SQLiteDatabase.openOrCreateDatabase(..)'返回結果來實現模擬的'openOrCreateDatabase'和'getDatabasePath'方法。 – Jens
我是否還需要在模擬器或物理設備中運行?理想情況下,我不想對Android設備有任何依賴。 – MayoMan
'SQLiteDatabase'有很多原生函數,所以你仍然在模擬器上運行。 – Jens