我有一個CSV類和一個CSV解析器類,以及它們的單元測試。我想看看單元測試的一部分,下面必須拆除:要進行單元測試還是不要單元測試此部分
public class CSV{
public string[] columns GetColumns()
{
var columns = null;
if (!string.IsNullOrEmpty(this.textReader.ReadLine()))
{
var columns = this.csvParser.GetColumns(line);
}
return columns;
}
}
[Test]
public void GetColumns_ReturnsCorrectLine()
{
reader.Setup(r => r.ReadLine()).Returns("a\tb\tc");
//Act
var columns = csvReader.GetColumns();
//Assert
Assert.IsTrue(columns!=null);
Assert.AreEqual(3, columns.Length);
Assert.AreEqual("a", columns[0]);
Assert.AreEqual("b", columns[1]);
Assert.AreEqual("c", columns[2]);
}
問題
1)必須的三條線是斷言列(代碼A,B,C)被刪除?
2)是否GetColumns_ReturnsCorrectLine
測試方法去掉最後三個斷言
後進行正確的單元測試請注意,已經有單元測試的CSV解析器的GetColumns()
方法的代碼。 GetColumns的功能是解析製表符分隔的字符串並將其轉換爲列。
任何想法?
謝謝你的建議。你說GetColumns()有三條路徑。當ReadLIne返回NULL和string.empty時,兩者是相同的路徑,而不是兩個路徑。但是,它可能被認爲是兩種不同的情況。好東西。我想知道更多關於單元測試的內容。我想知道你是否可以重新閱讀材料。非常感謝。 – Pingpong 2013-03-19 20:34:12
@pingpong我推薦由Roy Osherove撰寫的「單元測試的藝術」和由Michael Feathers撰寫的「遺產代碼有效工作」。此外,只需通過問題和答案在這裏閱讀:) – AlanT 2013-03-20 09:10:04
謝謝。我讀過「單元測試的藝術」。我知道基礎知識。我想深入瞭解。不是WEWLC比Steve Freeman更好的'面向對象軟件,通過測試引導'。如果兩者都好,我應該先閱讀哪一個?特別是,我想知道應該或不應該單元測試什麼,等等。與此同時,我正在網上撰寫相關主題。但我仍然喜歡書籍。 – Pingpong 2013-03-20 10:12:49