2011-10-05 120 views
0

,這可能是一個明顯的答案,但我無法弄清楚如何最好地創建單元測試以下:如何編寫單元測試時間敏感常數

Assert.AreEqual(27, AgeCalculator.GetAge(new DateTime(1983, 10, 6))); // this test will fail tomorrow 
Assert.AreEqual(26, AgeCalculator.GetAge(new DateTime(1984, 11, 14))); 
Assert.AreEqual(9, AgeCalculator.GetAge(new DateTime(2002, 05, 7))); 
Assert.AreEqual(7, AgeCalculator.GetAge(new DateTime(2003, 11, 03))); 
Assert.AreEqual(4, AgeCalculator.GetAge(new DateTime(2007, 05, 10))); 

我已經創建了一個GetAge()方法,我想要測試以確保對該方法的任何未來更改都可以。

回答

2

看看following blog post這是一個不錯的series of posts的一部分,用於測試非確定性。

+0

感謝鏈接 - 這是一個偉大的系列。非確定性是我一直在尋找的詞,但在發佈問題時沒有點擊:)再次感謝 – DaveHogan

+0

有時很容易忘記,當您詢問當前時間是否在您的系統時鐘上創建隱式依賴關係時。將這些調用包裝在自己的時間提供程序中,就像這篇文章所做的那樣,將立即提高單元測試的穩健性。 –

1

我會嘲笑你的AgeCalculator裏面的日期時間對象,以便它總是使用相同的測試日期。