在我的測試用例中,我需要測試時間敏感的方法,在該方法中我們使用的是java 8 class LocalDate,它是而不是Joda。我該如何模擬java.time.LocalDate.now()
我能做些什麼來改變的時候,當我跑步測試
在我的測試用例中,我需要測試時間敏感的方法,在該方法中我們使用的是java 8 class LocalDate,它是而不是Joda。我該如何模擬java.time.LocalDate.now()
我能做些什麼來改變的時候,當我跑步測試
在代碼中,有LocalDate.now(clock);
更換LocalDate.now()
。
然後您可以通過Clock.systemDefaultZone()
生產和a fixed clock進行測試。
您可能還想在生產中傳遞一個固定時鐘(其值在交易開始時固定)以避免在不同的實體和請求中使用不一致的「now」。 有關詳細信息,請參閱this question。
您可以重構您的代碼以使其測試友好,例如,用調用某種自定義可模仿非靜態類的方法替換LocalDate.now()
的所有調用。您也可以使用PowerMock's mockStatic。
這應該是公認的答案! – GedankenNebel