2012-10-30 148 views
0

在BDD測試中,我比較日期。比較日期時使用字符串。即使認爲兩個日期都是一樣的我收到此消息並且測試失敗字符串日期比較

預期對象爲「2012年12月20日12:00:00 AM」,但發現「2012年1月20日12:00:00上午」。

還有一件事是我的系統發生這種情況。如果我要求另一位開發人員進行測試,測試通過的很好。是否有我缺少的某種類型的設置?

它的代碼部分是

  customer["DateOfBirth"].Should().Be(Helper.DateOfBirth.ToString()); 

凡客是一個哈希表。這個特殊的聲明在其他機器上通過,但不是我的。

我知道我可以通過更改日期比較而不是字符串比較來修復它。但我很好奇,因爲這在其他機器上很好。

+2

我想象你的代碼存在問題。我有*想象,因爲你實際上沒有向我們展示過任何東西。 – RedFilter

+0

如果問題出在代碼上,它應該不會在另一臺機器上正常運行? – katie77

+0

如果您將日期作爲字符串進行比較,那麼您列爲字符串的日期並不相同。你應該轉換爲DateTimes然後比較。 – DougEC

回答

6

在BDD測試中,我比較日期。比較日期時使用字符串。

這聽起來像是你的問題。我的猜測是,你將比較在默認文化中格式化的日期和在其他文化中手動格式化的日期。

解決方法是使用DateTime值來執行比較,而不是依賴格式化的值。如果測試運行器不同,則允許測試運行器將的值格式化爲值。

3

的日期被格式化不同 - 一個具有領先的0

您應該格式化一樣,或者只是實際DateTime值直接比較。

+0

是依賴於格式系統嗎?它可以是 – katie77

+0

@ katie77,這取決於日期如何變成一個字符串。比較日期的最好方法是使用'DateTime'類型。 –