2017-04-05 76 views
1

在我的代碼,我有一個for循環一樣,創建java.util.map.Entry實例來幫助單元測試

for(final Entry<Object, Object> entry : fileTypeProperties.entrySet()) { 
    saveFileTypeToCompany(registeredCompany, 
      entry.getKey().toString(), 
      entry.getValue().toString()); 
} 

所以,雖然單元測試,如何創建Entry一個實例(即, java.util.map.Entry)?

+0

你通常把它看作'Map.Entry',不只是'Entry',只是約定。 'import java.util.Map',然後將其更改爲'Map.Entry '。 – Jameson

回答

0

其實你需要做的是一些屬性加載您fileTypeProperties如下圖所示,這樣,當你調用fileTypeProperties.entrySet(),它將返回Entry對象。

Map<Object, Object> fileTypeProperties = new HashMap<>(); 
// add some dummy property values to fileTypeProperties 
1
  • 您不能直接創建一個Map.Entry,因爲它是一個接口。如果您願意,您可以創建自己的類來實現接口。

  • 我不明白爲什麼你想爲單元測試創​​建一個條目。如果您正在測試saveFileTypeToCompany,那麼您將該條目的密鑰和值傳遞給它,而不是條目本身。因此,對於單元測試,您將測試值傳遞給函數。如果你正在測試你正在顯示的代碼,那麼你需要填充地圖來正確測試它。我看不到任何需要直接創建條目的情況。

  • 如果您確實需要使用Map.Entry進行單元測試,請使用模擬。您可以模擬界面,然後定義getKeygetValue返回的內容。

  • 如果您使用的是Java 8那麼你的代碼可以簡化爲:fileTypeProperies.forEach((k, v) -> saveFileTypeToCompany(company, k, v));