我感興趣的是寫一個類,它的公共API單元測試的最好途徑,就是某種流動的,例如:測試用流動的類
public class PaginatedWriter {
public void AppendLine(string line) { ... }
public IEnumerable<string> GetPages() { ... }
public int LinesPerPage { get; private set; }
}
該類對文本進行分頁線到給定每頁的行數。爲了測試這個類,我們可能會碰到這樣的:
public void AppendLine_EmptyLine_AddsEmptyLine() { ... }
public void AppendLine_NonemptyLine_AddsLine() { ... }
public void GetPages_ReturnsPages() {
writer.AppendLine("abc");
writer.AppendLine("def");
var output = writer.GetPages();
...
}
現在,我的問題是:它確定以使最後的測試方法AppendLine()的調用,即使我們正在測試的GETPAGES( ) 方法?
我知道在這種情況下一個解決方案是使AppendLine()虛擬並覆蓋它,但問題是AppendLine()操縱內部狀態,我認爲這不應該是單元測試的業務。
是的,看來如果我們嚴格應用「僅測試一種方法」規則,我們最終會得到一堆具有過程接口的類。 – Mohammad 2010-09-01 18:41:12