私は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
ですか?そして、その比較を信頼できない場合、いつ構築されるかの値をチェックするための厳密なテストをどのように書くことができますか?Now
FeedbackDate
FeedbackDao