3 回答
TA贡献1847条经验 获得超7个赞
有可以与股票测试框架集成的外部包。
我很久以前写的其中一个gocheck旨在对这种用例进行排序。
有了它,测试用例看起来像这样,例如:
func (s *Suite) TestFoo(c *gocheck.C) {
// If this succeeds the world is doomed.
c.Assert("line 1\nline 2", gocheck.Equals, "line 3")
}
您会像往常一样运行它,使用go test,并且该检查中的失败将报告为:
----------------------------------------------------------------------
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"
请注意代码正上方的注释是如何包含在报告的失败中的。
还有许多其他常用功能,例如套件和特定于测试的设置和拆除例程,等等。请查看网页了解更多详情。
它维护得很好,因为我和其他人在许多活跃的项目中使用它,所以请随时加入,或跟进并查看更适合您口味的其他类似项目。
对于gocheck使用的例子,请看看包装,如氧化镁,goyaml,goamz,管,VCLOCK,朱朱(大规模的代码库),LPAD,gozk,goetveld,墓等。此外gocheck,管理,测试本身。引导它很有趣。
TA贡献2003条经验 获得超2个赞
我不鼓励以您似乎想要的方式编写测试。整个 stdlib 使用您所说的“详细”方式并非偶然。
不可否认,这是更多的线路,但这种方法有几个优点。
如果你阅读了为什么 Go 没有断言?并且s/error handling/test failure reporting/g
你可以得到的为什么转到测试几个“断言”包不是一个好主意,用图片,
再一次,证明是 stdlib 的庞大代码库。
- 3 回答
- 0 关注
- 175 浏览
添加回答
举报