如何在ApplicationTestCase<MyApp>
?
我使用测试应用程序的资源来存储一些参考数据,但据我所知,我无法获取它的上下文。
我正在尝试执行以下操作:
referenceContents = readRawTextFile(
getSystemContext(),
//test application's res namespace is myApp.test.*
myApp.test.R.raw.reference_file);
其中readRawTextFile
是简单的文本阅读器例程,但我得到的数据是错误的。
答案 0 :(得分:4)
如果您需要正在测试的应用程序的上下文(即MyApp),那么您就是这样做的:
public class MyAppTest extends ApplicationTestCase<MyApp> {
public MyAppTest () {
super(MyApp.class);
}
public MyAppTest (Class<MyApp> applicationClass) {
super(applicationClass);
}
@Override
protected void setUp() throws Exception {
super.setUp();
createApplication();
}
public void testMyApp() throws Exception {
// Retrieves a file in the res/xml folder named test.xml
XmlPullParser xml = getContext().getResources().getXml(R.xml.test);
assertNull(xml);
}
}
如您所见,您可以使用以下方法获取正在测试的应用程序的上下文:
getContext()
在你的测试用例中。
但是,如果您有两个单独的项目:一个是您的应用程序,一个是您的测试项目,您需要testproject的上下文,那么您唯一的选择是扩展InstrumentationTestCase而不是ApplicationTestCase - 但是,这意味着您将无法获取应用程序项目的上下文,而只能获取测试项目的上下文。