2017-04-06 54 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);