另一種解決方案是避免使用ApplicationTestCase
或AndroidTestCase
或依賴於Context
的任何其他類。問題的關鍵是,有沒有必要測試SQLite
或ORM
框架,所以你可以用基本的CRUD
方法創建界面:
public interface UsersManager{
User createUser(String userId);
User getUser(String userId);
boolean updateUser(User user);
boolean deleteUser(User user);
}
並實行兩個版本:一個用於測試,另一個用於生產運行。爲測試版本可能與HashMap
可以輕鬆實現:
public class TestUsersManager implements UsersManager{
private HashMap<String, User> users = new HashMap();
public User createUser(String userId){
User result = new User(userId);
users.put(userId, user);
return result;
}
//... other methods
}
它的工作速度快(無磁盤IO
在SQLite
情況下),不存在外部依賴性。順便說一句,這也是額外的抽象層次:對於生產代碼,您可以輕鬆地在ORM
框架之間切換。
感謝埃裏希,這絕對是正確的道路要走。 – 2010-01-19 18:13:50
當擴展AndroidTestCase,然後調用'this.getContext()'時,返回'null'。它是如何工作的?我期望返回一個與SQLite一起使用的豐富上下文 – cdaringe 2016-03-23 04:41:11
AndroidTestCase現在已被棄用,建議使用InstrumentationRegistry代替。 – 2016-09-21 08:41:19