Gojko Adzic今天在他的博客上發佈了關於史蒂夫弗里曼的單元測試技巧,這有助於明確爲什麼單元測試中的日期比較失敗。 Here is the blog post describing the trick - it is not long。邪惡的JUnit日期技巧 - 你將如何在C#中做到這一點?
特技的關鍵部分是該方法(在Java中),它覆蓋在日期類的特定實例的ToString()。
private Date namedDate(final String name, final Date date) {
return new Date(date.getTime()){
@Override
public String toString() {
return name;
}
};
}
看來,這種方法使用的Java語言中的設施,沒有在C#(或至少一個,我所知道的)比賽。如果您可以告訴我如何在C#中執行相同的技巧,那將非常棒。
這不是反射,只是一個匿名內部類。我想你可以在C#中做同樣的事情,或者只是創建一個C#的等價日期類的命名子類。 – 2010-10-21 18:29:37
@Mark:反射只是一個猜測 - 刪除標籤。 – azheglov 2010-10-21 18:37:11
我想不出一種方法來複制它。如果DateTime不是結構體,我們可以繼承它並覆蓋,但事實並非如此。並且擴展方法不會覆蓋實例方法。考慮隱式類型轉換,但是它們必須在字符串或DateTime上定義。認爲你可能在這裏失敗了,只是改變了測試代碼。 – 2010-10-21 18:37:35