2017-08-15 49 views
0

如何在內存資源文件夾中的JSON文件中讀取對象的存儲庫中測試?從文件映射對象的測試存儲庫

庫:

@Repository 
public class MyRepository{ 

    private TreeMap<String, MyObject> objects; 
    private ObjectMapper mapper; 

    @Autowired 
    public MyRepository(ObjectMapper objectMapper) throws IOException { 
     // mapping objects from /resources to TreeMap 
    } 

    // some custom methods working on my objects 

} 

現在我想測試這些方法,但我不想用「真實」的對象。什麼是測試它的最好方法?我應該創建一些構造函數,將一些對象集合作爲參數嗎?

回答

1

這取決於你想要進行多少測試。您需要對代碼中涉及的風險進行成本收益分析。序列化和寫入文件存在缺陷風險,但代碼的最高風險區域可能是方法正在進行的操作。這取決於代碼的複雜性

在您剛剛在對象列表中傳遞的示例中,它只會測試方法內的邏輯,但它不會測試從內存到JSON的序列化和寫入文件。

如果要包含對序列化和寫入文件的測試,可以傳入一個參數,該參數給出文件所在的目錄。默認情況下,它會承擔/資源。在測試中,您可以創建一個@Before,其中在特定位置複製或創建目錄,然後在測試期間將路徑傳遞到存儲庫。從代碼覆蓋率更高的角度來看,這樣做更好,但如果序列化非常簡單,則可能沒有好處。

+0

所以在我的情況下,如果我只關心測試我的方法中的邏輯,創建構造函數僅用於測試準備好的對象(不是從JSON文件創建)是好方法嗎? – crooked

+1

這是一個很好的方法。人們可以花太多時間進行測試,並且浪費寶貴的時間來獲得100%的代碼覆蓋率,這時幾乎沒有任何好處。 –