如何在ApplicationTestCase <myapp>?</myapp>中获取测试应用程序本身的上下文

时间:2011-08-28 21:42:34

标签: java android testing

如何在ApplicationTestCase<MyApp>

中获取测试应用程序本身的上下文

我使用测试应用程序的资源来存储一些参考数据,但据我所知,我无法获取它的上下文。

我正在尝试执行以下操作:

referenceContents = readRawTextFile(
    getSystemContext(),
    //test application's res namespace is myApp.test.* 
    myApp.test.R.raw.reference_file);

其中readRawTextFile是简单的文本阅读器例程,但我得到的数据是错误的。

1 个答案:

答案 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 - 但是,这意味着您将无法获取应用程序项目的上下文,而只能获取测试项目的上下文。