【问题标题】:Unit testing .NET DateTime to SQL DateTime values对 .NET DateTime 到 SQL DateTime 值的单元测试
【发布时间】:2014-08-29 11:00:59
【问题描述】:

当我运行这段代码时:

var数据=“测试”; var timestamp = DateTime.Now; var id = repo.InsertNewRecord(数据,时间戳); var 记录 = repo.GetRecord(id); 断言.AreEqual(数据,记录。数据); Assert.AreEqual(timestamp, record.TimeStamp);

...第二个断言失败。

预期时间戳的滴答计数为 635449135145624472,但我从数据库接收的值的滴答计数为 635449135140000000。这是可以理解的,因为 .NET DateTime 值的准确度为 100ns,而 SQL Server DateTime 只有精度为 3.33 毫秒。我真的不需要比这更准确的时间戳,但是是否有测试输入和输出是否相等的标准方法?

从数据库中获取时间戳是一种方法:

var timestamp = Session.CreateSQLQuery("SELECT GetDate()").UniqueResult();

【问题讨论】:

    标签: .net sql-server unit-testing datetime


    【解决方案1】:

    请在蜱水平不测试,你可以使用一个特定的格式,以测试日期e.g。 P>

    var dateFmt = "dd-MM-yyyy hh:mm:ss";
    Assert.AreEqual(timestamp.ToString(dateFmt), record.TimeStamp.ToString(dateFmt));
    

    或者,你的可能 em>的做,但只是添加一些空间变化。 P>

    Assert.True((timeStamp - record.TimeStamp).TotalMilliseconds < 1000);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 2019-12-31
      • 2020-03-04
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      相关资源
      最近更新 更多