我有一個類,它現在應該總是有一個特定的成員填充之前,它是有效的。爲了執行此操作,類沒有默認構造函數,而是有一個構造函數接受該必需成員的值。設置與此類似如下:在NUnit中測試不可編譯的代碼
public class MyClass
{
public string Owner { get; protected set; }
public MyClass(string owner)
{
this.Owner = owner;
}
}
現在我想編寫一個測試,以確保有其實沒有默認構造函數,因此,如果一個在未來被添加,提醒我們的沒有理由背後的原因,並被迫考慮這樣做的影響。儘管顯然試圖在測試中調用默認構造函數不會失敗,但它不會編譯。
有沒有一種很好的方法來完成這種測試而無需修改我的原始類?如果沒有,我想我可以實現一個引發異常的默認構造函數。我唯一猶豫的是現在調用默認構造函數變成可編譯代碼,然後我們必須依賴其他測試來確保這些代碼不會被寫入。
想法?
無論你想出什麼解決方案,我都會建議記錄類中缺少默認構造函數的重要性,以便您不依賴於未來可能運行或未運行的測試。當然,下一個開發人員可能會忽略其他級別的評論:-) – 2010-02-18 19:53:52
應該在構建服務器上運行測試,以便如果失敗,構建將會中斷。依靠開發人員來運行測試總是一個壞主意 - 如果沒有持續集成,單元測試將無法正常工作。 – womp 2010-02-18 20:26:27
@womp:同意但運行在構建服務器上,或者不能單獨測試仍然可以啓用/禁用,這是我的觀點。依靠項目其他部分的測試將繼續進行下去並不無道理,但也不能保證。至少在課堂上的意見,你正在盡一切努力讓人們意識到。因爲未來的開發人員不會知道與特定測試存在相關的「原因」,所以可能比單獨測試更爲重要。我想,涵蓋所有基地是我的觀點。 – 2010-02-18 20:53:17