私はC#(.NET 4.5)でユニットテストクラスを書いています。テストの1つでは、クラスのインスタンス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);
DateTime.Now私の仮定では、feedbackDao.FeedbackDateは、ミリ秒だけであっても、返される現在の時刻よりも常に少し早く、IsTrueテストは常に合格するはずですが、合格することもあれば、失敗することもあります。このようなメッセージを追加すると:
Assert.IsTrue(feedbackDao.FeedbackDate.CompareTo(DateTime.Now) < 0,
feedbackDao.FeedbackDate.CompareTo(DateTime.Now).ToString());
メッセージは、-1(FeedbackDateより前を意味するNow)を読み取る場合と、0(DateTimeインスタンスが等しいことを意味する)を読み取る場合があります。
なぜ いつもより早くないのFeedbackDateですか?そして、その比較を信頼できない場合、いつ構築されるかの値をチェックするための厳密なテストをどのように書くことができますか?NowFeedbackDateFeedbackDao