2011-11-25 48 views
0

我最近有一個getter函數,它只是使用特定的時間格式返回當前時間。由於它使用某些系統API返回當前時間,所以我想不出爲此編寫單元測試的方法。如何爲'getCurrentTime()'函數編寫單元測試?

任何人都可以對此提出建議嗎?

+0

你想要測試什麼?你想測試它返回正確的時間嗎?或者時間以正確的格式返回? –

+0

嗨丹尼爾,是的,我想測試它是否在正確的時間和正確的格式。 – zyzyis

回答

1

至少你可以檢查,如果結果不爲空,如果你把它叫做兩次,第二個結果是大於第一。

+0

好的!那會爲此增加兩個。 – zyzyis

+0

如果兩個系統調用足夠快地發生,返回的時間不會改變,則可能會出現問題。我可以很容易地看到兩次調用System.getCurrentTimeMillis()的時間少於一個ms。當然,你可以在它們之間添加一個對Thread.sleep()的調用,但是這感覺就像是一個黑客。 – Kane

1

您需要將系統API從您的系統中分離出來。

已知的方式來做到這一點是使用依賴注入。你在時間格式化程序中注入一個類來檢索當前時間。

在單元測試中插入一個假CURRENTTIME API將返回預定的值,以便您可以檢查您TimeFormatter的結果。 當您在生產中運行時,您使用System API。

1

理想的解決方案是不直接使用系統的時間,而是有你的所有代碼各地使用系統的包裝(假設的Java,說),你可以模擬出。這可能不可行,或者容易。

一個更簡單的方法是將嚴格創建第二個方法做了格式化,它以時間爲參數。然後,您可以輕鬆徹底地測試格式。

然後在你原來的方法調用新的方法,通過在系統中的時間(例如System.currentTimeMillis())也懶得寫測試它。沒有什麼可以做錯的,你可以做任何事情,在那個時候,所以沒有什麼可以測試的。

相關問題