我正在研究一個依賴於日期時間的應用程序(一個web應用程序,asp.net和c#),因此,根據當前日期,它將啓動窗體爲登錄用戶填寫。如何調試時間依賴的應用程序? (使用當前日期時間變量而不是DateTime.Now)
我一直在考慮如何模擬應用程序的實際使用情況,以用於調試和測試目的。
所以,我說的是更換所有這些:
DateTime currentDate = DateTime.Now;
的東西,如:
DateTime currentDate = MyDateClass.GetCurrentDate();
然後,我將有一個類:
public class MyDateClass
{
private DateTime _currentDate;
public DateTime GetCurrentDate()
{
// get the date, which may be different from DateTime.Now
return _currentDate;
}
public void SetCurrentDate(DateTime newCurrentDate)
{
// set the date to the value chosen by the user
_currentDate = newCurrentDate;
}
}
讓我通過調用SetCurrentDate方法來設置當前數據,例如,在鏈接按鈕和日曆inp的代碼後面UT。
問題是......我應該如何在所有應用程序中準確存儲DateTime變量?我不能在這堂課上學習,對吧?我應該使用線程嗎?
那麼,想法讚賞:)在此先感謝您的建議!
對我的問題的一些更新:
我碰到了這個帖子:What's a good way to overwrite DateTime.Now during testing?
就像你與你的答案提供在這裏(謝謝!),良好的代碼組織偉大的祕訣,對於無論是開發還是測試目的,我都會在考慮的時候考慮。
雖然我仍然有同樣的問題:我將如何「保留」日期時間值?
現在,我在數據庫中創建一個單元格表以保持「我的」日期時間值。
我有一個GetCurrentDate和SetCurrentDate功能的靜態類:
public static class DateManagement
{
public static DateTime GetCurrentDate()
{
// return DateTime.Now;
// OR:
// ...
// SqlCommand cmd = new SqlCommand("select Date from CurrentDate", conn);
// ...
}
public static void SetCurrentDate(DateTime newDate) // used only in debugging
{
// ...
// string insertStr = @"update CurrentDate set Date = '" + date + "'";
// SqlCommand cmd = new SqlCommand(insertStr, conn);
// ...
}
}
然而,在數據庫中存儲的日期,以創造和公正的調試使用的表格,似乎並不像一個優雅解決方案...
然後,如果你正在談論我假設的會話,那麼你正在創建一個Web應用程序? – Neil 2010-11-03 10:49:34
您可以先開始製作MyDateClass靜態。 – 2010-11-03 10:50:53
是的,這是一個web應用程序(asp.net和c#,vs2008開發)。 – naruu 2010-11-03 11:04:25