2017-04-06 79 views
2

#單元測試的日期時間我做了日期時間單元測試和它失敗,因爲測試名稱:Ç對字符串

GetDateTime2結果消息:Assert.AreEqual失敗。 預計:< 28/05/2017 20:00:00(System.String)>。實際:< 28/05/2017 20:00:00(System.DateTime)>。

是否有串反對我一定要改變字符串的日期和時間字符串的屬性的日期時間比較的方法嗎?

public void GetDateTime() 
{ 
     FootballEvent football = new FootballEvent(); 
     football.Time = "20:00:00"; 
     football.Date = "28/05/2017"; 
     var footballtime = football.GetDateTime(); 
     var expected = "28/05/2017 20:00:00"; 
     Assert.AreEqual(expected, footballtime); 
} 
+7

爲什麼你不只是構建一個'DateTime'來進行比較?爲什麼要使用字符串表示呢? –

+1

要麼將​​DateTime轉換爲字符串,要麼將字符串轉換爲DateTime ... –

+0

考慮比較football.Hour == 20,football.Minute == 0等等。在單元測試中做一些不同的事情會很有用比主要的代碼。測試仍然清晰且有價值,但您可能會發現意想不到的情況。可能不在這裏,但在你的情況下,這可能是另一種方式來實現你想要的。 –

回答

1

你可以稱之爲ToString()你想要的任何格式,你的時間是在作比較。

var expected = "28/05/2017 20:00:00"; 
//Use HH for 00-23, use H for 0-23, use hh for 01-12 and use h for 1-12 
Assert.AreEqual(expected, footballtime.ToString("dd/MM/yyyy HH:mm:ss")); 

但是好像你都應該以正確的格式(日期時間)進行比較。

問自己,爲什麼要初始化通過串(football.Time = "20:00:00";)的時候,爲什麼不使用的日期和時間(DateTime

+0

我曾嘗試過,但它沒有工作,我回來了正確的答案。預計:<28/05/2017 20:00:00>。實際:<28/05/2017 08:00:00>。 –

+0

我用更多的日期時間格式更新了我的答案 – maccettura

1

像有些人已經在評論中說,爲什麼不只是做一個DateTime正確的數據類型對象然後比較它們?

例子:

var footballtime = football.GetDateTime(); 
var expected = "28/05/2017 20:00:00"; 
DateTime expectedDate = DateTime.Parse(expected); 
Assert.AreEqual(expectedDate, footballtime);