时间:2019-03-17 标签:c#datetime对string单元测试

Gre*_*016 5 c# datetime

我正在对日期时间进行单元测试,但它失败了,因为测试名称:

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);  
}
Run Code Online (Sandbox Code Playgroud)

Ous*_* D. 5

正如有些人在评论中所说,为什么不直接制作一个DateTime对象然后比较它们呢?

例子:

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


mac*_*ura 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"));  
Run Code Online (Sandbox Code Playgroud)

然而,您似乎应该以正确的格式(日期时间)比较两者。

问问自己为什么要通过字符串 ( ) 初始化时间,为什么不为日期和时间 ( )football.Time = "20:00:00";使用正确的数据类型DateTime