我正在爲我正在處理的項目中的一些實用程序類設置單元測試,其中一個類(包含許可信息)有一個方法根據當前時間做出一些確定。在當前時間使用條件處理單元測試
即,許可證包含到期日期,並且許可證字符串驗證該日期,但查看許可證是否過期的實際邏輯基於當前時間。
public boolean isValid()
{
return isLicenseStringValid() && !isExpired();
}
public boolean isExpired()
{
Date expiry = getExpiryDate();
if(expiry == null) {
return false;
}
Date now = new Date();
return now.after(expiry);
}
因此,我不知道該怎麼做,因爲'new Date()'事物不是靜態標準。
- 我不應該費心去測試'isValid',只是單獨測試'isLicenseStringValid()'和'getExpiryDate()'函數?
- 難道我只是在測試中使用許可證密鑰並且瘋狂的長期到期,以至於我將在其到期時間之前切換作業?
- 我是否試圖將'new Date()'模擬成某種'getCurrentTime()'方法,以便我可以僞造現在的時間?
其他人通常對時間有條件的測試做什麼?
BTW,我看比迄今爲止其他邏輯代碼的一個問題: 如果(到期== NULL){ 返回FALSE; } 如果失效日期爲空,我認爲你不應該在'isExpired()'方法返回'false'。 欲瞭解更多信息,請閱讀 - https://www.owasp.org/index.php/Fail_securely – Garbage 2013-03-03 14:40:39
這是一個許可證對象,有兩種可能的模式: 1.永久無期限(因此上述) 2.臨時有效期爲 因此,如果沒有到期日期設定,則不會過期。 – 2013-03-04 14:55:57