2011-07-26 79 views
4

我有一個使用測試數據的儀器測試。我將這個測試數據作爲資產文件包含在測試項目中,並且運行良好。如何從測試項目訪問內部存儲?

我想通過將測試數據文件推送到測試應用程序的內部存儲器,然後讓測試從內部存儲器讀取測試數據(如果存在)來加速使用不同測試數據重新運行測試。

但是,我無法從測試應用程序訪問內部存儲。我正在使用android.test.InstrumentationTestRunner的子類,並且所有對getContext().getFilesDir()的調用返回null

測試應用程序無法訪問內部存儲?

任何幫助,非常感謝。

+0

嘗試調用'getFilesDir()'上'Context'從一個你' TestCases「(例如'AndroidTestCase')。 – CommonsWare

+0

測試用例是ActivityInstrumentationTestCase2實例,它們只能通過'Instrumentation'類獲取'Context',所以可能會給我和儀器測試運行器一樣的'Context'。更重要的是,我根據測試數據生成測試實例,所以我需要在實例化所有測試之前訪問測試數據。 – donV

+0

使用'ActivityInstrumentationTestCase2'中的'getActivity()'來獲取'Activity'對象,並從那裏使用'getFilesDir()'。 「更重要的是,我根據測試數據生成測試實例,所以我需要在實例化所有測試之前訪問測試數據。」 - 那麼我懷疑你被擰了,將不得不在一條路上硬連線。 – CommonsWare

回答

1

如果你碰巧使用Roboguice與你的測試,確保你實現你的應用程序類的這樣的構造:

public MyApplication(Instrumentation instrumentation) { 
    this(); 
    attachBaseContext(instrumentation.getTargetContext()); 

    //this does not work: 
    //attachBaseContext(instrumentation.getContext()); 
} 
+0

對不起,沒有使用Roboguice。 – donV