單元測(cè)試 - 記錄然后失?。?/h1>
3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
有可以與股票測(cè)試框架集成的外部包。
我很久以前寫(xiě)的其中一個(gè)gocheck旨在對(duì)這種用例進(jìn)行排序。
有了它,測(cè)試用例看起來(lái)像這樣,例如:
func (s *Suite) TestFoo(c *gocheck.C) {
// If this succeeds the world is doomed.
c.Assert("line 1\nline 2", gocheck.Equals, "line 3")
}
您會(huì)像往常一樣運(yùn)行它,使用go test,并且該檢查中的失敗將報(bào)告為:
----------------------------------------------------------------------
FAIL: foo_test.go:34: Suite.TestFoo
all_test.go:34:
// If this succeeds the world is doomed.
c.Assert("line 1\nline 2", gocheck.Equals, "line 3")
... obtained string = "" +
... "line 1\n" +
... "line 2"
... expected string = "line 3"
請(qǐng)注意代碼正上方的注釋是如何包含在報(bào)告的失敗中的。
還有許多其他常用功能,例如套件和特定于測(cè)試的設(shè)置和拆除例程,等等。請(qǐng)查看網(wǎng)頁(yè)了解更多詳情。
它維護(hù)得很好,因?yàn)槲液推渌嗽谠S多活躍的項(xiàng)目中使用它,所以請(qǐng)隨時(shí)加入,或跟進(jìn)并查看更適合您口味的其他類似項(xiàng)目。
對(duì)于gocheck使用的例子,請(qǐng)看看包裝,如氧化鎂,goyaml,goamz,管,VCLOCK,朱朱(大規(guī)模的代碼庫(kù)),LPAD,gozk,goetveld,墓等。此外gocheck,管理,測(cè)試本身。引導(dǎo)它很有趣。

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
我不鼓勵(lì)以您似乎想要的方式編寫(xiě)測(cè)試。整個(gè) stdlib 使用您所說(shuō)的“詳細(xì)”方式并非偶然。
不可否認(rèn),這是更多的線路,但這種方法有幾個(gè)優(yōu)點(diǎn)。
如果你閱讀了為什么 Go 沒(méi)有斷言?并且s/error handling/test failure reporting/g
你可以得到的為什么轉(zhuǎn)到測(cè)試幾個(gè)“斷言”包不是一個(gè)好主意,用圖片,
再一次,證明是 stdlib 的龐大代碼庫(kù)。
- 3 回答
- 0 關(guān)注
- 218 瀏覽
添加回答
舉報(bào)