c#针对字符串的单元测试日期时间

c#针对字符串的单元测试日期时间,c#,datetime,C#,Datetime,我正在对datetime进行单元测试,但由于测试名称: GetDateTime2结果消息:Assert.AreEqual失败。 预期:。实际值: 是否有方法将字符串与的日期时间进行比较?是否必须更改字符串日期和字符串时间的属性 public void GetDateTime() { FootballEvent football = new FootballEvent(); football.Time = "20:00:00"; football.Date =

我正在对datetime进行单元测试,但由于测试名称:

GetDateTime2结果消息:Assert.AreEqual失败。 预期:。实际值:

是否有方法将字符串与的日期时间进行比较?是否必须更改字符串日期和字符串时间的属性

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);  
}

您可以使用任何格式调用
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

,正如一些人在评论中所说的那样,为什么不创建一个
DateTime
对象,然后比较它们呢

示例:

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

为什么不构造一个
DateTime
来进行比较呢?为什么要使用字符串表示?要么将日期时间转换为字符串,要么将字符串转换为DATETIME……考虑比较Cyth.Th=20,Cyth.Me==0等。在单元测试中做一些与主代码不同的事情可能是有用的。测试仍然清晰且有价值,但您可能会发现一些意想不到的事情。可能不在这里,但在你的情况下,这可能是实现你想要的另一种方式。我以前试过,但没有成功,我得到了正确的答案。预期:。实际值:。