我有一个Go包的测试套件,它实现了十几个测试。有时,套件中的一个测试失败,我想单独重新运行该测试以节省调试过程的时间。这是可能的,还是我每次都必须为此写一个单独的文件?
答案 0 :(得分:31)
使用go test -run
标志运行特定测试。该标志记录在
testing flags section文档的go tool:
-run regexp
Run only those tests and examples matching the regular
expression.
答案 1 :(得分:6)
如果有人使用Go的Ginkgo BDD框架会遇到同样的问题,可以在该框架中通过将测试规范标记为聚焦(see docs),在它之前预先设置F,上下文或描述来实现功能。
所以,如果您的规格如下:
It("should be idempotent", func() {
您将其重写为:
FIt("should be idempotent", func() {
它将完全按照一个规范运行:
[Fail] testing Migrate setCurrentDbVersion [It] should be idempotent
...
Ran 1 of 5 Specs in 0.003 seconds
FAIL! -- 0 Passed | 1 Failed | 0 Pending | 4 Skipped
答案 2 :(得分:5)
说您的测试套件的结构如下:
type MyTestSuite struct {
suite.Suite
}
func TestMyTestSuite(t *testing.T) {
suite.Run(t, new(MyTestSuite))
}
func (s *MyTestSuite) TestMethodA() {
}
要在go中运行特定的测试套件测试,您需要使用:-testify.m
。
go test -v <package> -run ^TestMyTestSuite$ -testify.m TestMethodA
更简单地说,如果方法名称对于程序包是唯一的,则可以始终运行此方法
go test -v <package> -testify.m TestMethodA
答案 3 :(得分:3)
给出测试:
func Test_myTest() {
//...
}
仅运行以下测试:
go test -run Test_myTest path/to/pkg/mypackage
答案 4 :(得分:0)