2012-02-29 29 views
2

我的項目設置Android的測試項目 - 閱讀資產文件來測試普通Java對象

  • 圖書館項目A包含這樣的fooJSONParser:

    public class fooJsonParser { 
        ... 
        // Constructor using the input-stream 
        public DPNodeJsonParser(InputStream inputJsonStream) { 
        // Constructor 
        } 
    
        /** 
        * Method that has to be executed once the class is instantiated to parse 
        */ 
        public parsedObject parseObj() { 
        // Parses and prints the info 
        } 
    
  • 應用項目B,它使用圖書館項目A

問題

現在我已經創建了一個測試項目測試應用項目B並添加一個測試用例來測試fooJsonParser類。每當有新的JSON數據,我更新的解析方法,並希望使用它的測試項目,看看是否解析器正確解析,而不是安裝,運行應用程序並導航到屏幕,新的JSON數據將是檢驗用過的。爲了完成這個,我在測試儀assets文件夾中有一個json文件。但我不確定我如何閱讀json文件。我認爲這與MockContext有關,但不知道如何使用它,因爲documentation表示所有方法都不起作用。

有人能提出一個解決方案/提供樣本讀從plain java object test case資產文件?

我是相當新的Android的測試環境。讓我知道如果有什麼不清楚的。我可以添加更多信息。

+0

我有類似的問題。您的資產是在「App Project B」的資產文件夾還是位於「tester」的資產文件夾中? – 2013-11-25 03:41:12

回答

2

我用下面這段解決:

  • 創建的安裝所解釋here
  • 擴展的InstrumentationTestCase而不是TestCaseInstrumentationTestCase有方法getInstrument()通過我可以訪問Instrumentation的(測試應用程序項目)上下文。
+2

是的,這是我們正常的做法,6個月前檢查一下我的安裝程序[這裏](http://stackoverflow.com/questions/6547783/storing-test-files-in-the-test-project)。但嚴格來說,這不是你問的問題,你要求怎麼做POJO,我可能會誤解你的問題。 – yorkw 2012-03-03 20:24:15

3

假設您有包含json_sample.txt資產文件夾,如果我還記得,你可以從一個POJO這個得到它:

String testFile = "json_sample.txt"; 
InputStream in = this.getClass().getClassLoader().getResourceAsStream(testFile); 

我記得我在我的項目的一個長的時間以前這樣做,如果您需要添加資產/作爲testFile的前綴,請不要使用,請嘗試一下。

UPDATE:
我只是意識到資產文件夾不再自動添加到項目構建路徑,可能是因爲R14。我很確定它之前(與res文件夾相同)。該文件必須在構建路徑下,爲了使代碼正常工作,需要手動將assets文件夾添加到項目構建路徑中,右鍵單擊項目 - 構建路徑 - 配置構建路徑,在構建時將資源文件夾添加爲源文件夾路徑。或者將文件移動到res文件夾中。

Android的文件系統是有許多限制,如果有另一種方式來讀取一個POJO斷言文件我很懷疑。

+0

@ 500865,看我的更新。 – yorkw 2012-03-01 03:45:03

+0

我以另一種方式解決了問題。你可以檢查我的答案。 – 500865 2012-03-03 19:47:18

+0

+1爲您的更新! – PearsonArtPhoto 2014-01-30 11:28:41

0

由於Android Gradle Plugin版本1.1你沒有使用Instrumentation加載文件資源。

我寫了here怎麼用POJO unit test這個案例。