2012-03-16 82 views
1

我們如何才能對取決於日期的功能進行驗收/集成測試?如何測試取決於日期事件的功能?

爲簡單起見,我們假設這個特性:我們監視一個文件夾,並將項目添加到與接收文件相對應的ListView中。列表視圖項目的顏色將取決於它收到的日期。說,如果星期天收到,顏色是紅色的,星期一,它是藍色的,等等。

我們如何在不需要一週運行的情況下對此功能做出測試代碼?測試代碼是否應該修改系統日期(但是恐怕這會在測試框架和報告中造成不好的結果)?有關信息,該應用程序是一個.net和開發人員使用DateTime.Now來獲得接收時間。

注意這不是一個單元測試,這是一個模擬用戶交互的驗收測試。

回答

2
  • 您將不得不使用一個假框架,它可以根據DateTime.Now返回而不需要接口。像TypeMock
  • 否則,你可以創建你有過僞裝(這是在這種情況下不太理想,因爲它是唯一的正在做的測試代碼)
  • 否則更多的控制自己的Date對象,你可以創建一個類它有一個可以存根的GetCurrentDate方法。在你的prod實現中,你可以使用DateTime.Now,但是在你的測試中,你可以將它存根出來,以便它返回你想要的任何日期。 這可能是IMO

然而,這不會測試完整的,真正實現了最佳的解決方案,更是一個單元測試的。如果您的確在談論端到端集成測試,那麼是的,您需要修改系統時間。

0

如果它的驗收測試:「注射」一個模擬類來取代現有的一個被稱爲「依賴注入」(DI),和一些用於執行DI框架的方法,在所討論的要求用戶交互,最好的辦法是改變系統時間。

如果是單元測試,則需要將依賴項(DateTime)傳遞到要測試的方法中。