我正在编写一些测试来测试我的 sqllite 数据库代码。有人可以在这里解释使用我从中获得的上下文AndroidTestCase.getContext()
或使用IsolatedContext
.
3 回答
对于那些不想点击 Google Group 链接的人,这里是那里给出的答案:
AndroidTestCase.getContext() 返回一个普通的 Context 对象。它是测试用例的上下文,而不是被测组件。
隔离上下文返回一个“模拟”上下文。我将“模拟”放在引号中,因为它不是该术语正常意义上的模拟(用于测试)。相反,它是您必须自己设置的模板上下文。它将您与正在运行的 Android 系统“隔离”,这样您的 Context 或您的测试就不会意外地超出测试夹具。例如,IsolatedContext 不会意外命中生产数据库(除非您将其设置为这样做!)但是请注意,IsolatedContext 中的某些方法可能会引发异常。隔离上下文记录在开发人员指南框架主题 > 测试下的测试基础和内容提供程序测试中。
The answer:
http://groups.google.com/group/android-developers/browse_thread/thread/3a7bbc78258a194a?tvc=2
我有一个简单的问题:我需要在不接触真实数据库的情况下测试我的 DAO 类。所以我找到了IsolatedContext
来自文档。但最后我在同一个文档中找到了另一个上下文:RenamingDelegatingContext
可能更容易使用。这是我的测试用例:
public class AddictionDAOTest extends AndroidTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
setContext(new RenamingDelegatingContext(getContext(), "test_"));
}
public void testReadAllAddictions() throws Exception {
ImQuitDAO imQuitDAO = new ImQuitDAO(getContext());
...
}
}