我正在用 C# (.NET 4.5) 编写单元测试类。在其中一个测试中,我在FeedbackDao
构造我们的类的实例后检查各种属性的值。在构造时, 的FeedbackDate
属性FeedbackDao
设置为DateTime.Now
。
FeedbackDao feedbackDao = new FeedbackDao();
// a couple of lines go here then I set up this test:
Assert.IsTrue(feedbackDao.FeedbackDate.CompareTo(DateTime.Now) < 0);
我的假设是 feedbackDao.FeedbackDate 应该总是比返回的当前时间稍早一点DateTime.Now
,即使它只有一毫秒,我的IsTrue
测试应该总是通过,但有时它通过,有时它失败。当我添加这样的消息时:
Assert.IsTrue(feedbackDao.FeedbackDate.CompareTo(DateTime.Now) < 0,
feedbackDao.FeedbackDate.CompareTo(DateTime.Now).ToString());
该消息有时显示为 -1(表示FeedbackDate
早于Now
),有时显示为 0(表示 DateTime 实例相等)。
为什么 FeedbackDate
不总是早于Now
?而且,如果我不能相信那个比较,我怎么能写一个严格的测试来检查FeedbackDate
whenFeedbackDao
被构造的值?