Testing 为什么测试失败,错误代码为0?
作为构建的一部分,我需要运行测试Testing 为什么测试失败,错误代码为0?,testing,go,continuous-integration,tdd,goconvey,Testing,Go,Continuous Integration,Tdd,Goconvey,作为构建的一部分,我需要运行测试 如何确保go test退出时带有错误退出代码(不是0)?您可以将GoTransfer作为正常测试运行,您只需编写一个小测试即可进行测试,该测试将给出可预测的结果,如下图所示 package c import ( "testing" . "github.com/smartystreets/goconvey/convey" ) func TestConvey(t *testing.T){ Convey("TestConvey", t, f
如何确保
go test
退出时带有错误退出代码(不是0)?您可以将GoTransfer作为正常测试运行,您只需编写一个小测试即可进行测试,该测试将给出可预测的结果,如下图所示
package c
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestConvey(t *testing.T){
Convey("TestConvey", t, func() {
So(false, ShouldBeTrue)
})
}
这应该是结果
xxx 14:44:03~/GO/src/c/c>GO测试
x
失败:
* /home/xxx/GO/src/c/c/a_test.go
Line 10:
Expected: true
Actual: false
1 total assertion
--- FAIL: TestConvey (0.00s)
FAIL
exit status 1
FAIL c/c 0.006s
您可以作为一个普通的测试运行GoTransfer,您可以非常简单地通过编写一个小测试来测试它,这个小测试会给出一个可预测的结果,就像这样
package c
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestConvey(t *testing.T){
Convey("TestConvey", t, func() {
So(false, ShouldBeTrue)
})
}
这应该是结果
xxx 14:44:03~/GO/src/c/c>GO测试
x
失败:
* /home/xxx/GO/src/c/c/a_test.go
Line 10:
Expected: true
Actual: false
1 total assertion
--- FAIL: TestConvey (0.00s)
FAIL
exit status 1
FAIL c/c 0.006s
Ok找到了错误:
我在测试之前运行的代码中有TestMain:
func TestMain(m *testing.M) {
log.SetOutput(ioutil.Discard) // Disable logs.
m.Run()
}
m.Run
应使用os.Exit
包装,以便与错误状态代码一起使用:
func TestMain(m *testing.M) {
log.SetOutput(ioutil.Discard) // Disable logs.
os.Exit(m.Run())
}
已修复问题确定找到错误:
我在测试之前运行的代码中有TestMain:
func TestMain(m *testing.M) {
log.SetOutput(ioutil.Discard) // Disable logs.
m.Run()
}
m.Run
应使用os.Exit
包装,以便与错误状态代码一起使用:
func TestMain(m *testing.M) {
log.SetOutput(ioutil.Discard) // Disable logs.
os.Exit(m.Run())
}
这解决了问题GoGo支持Go的本机测试包。既不需要web UI也不需要DSL;您可以单独使用其中一个。@Bert Verhees我运行go测试,看到一个失败的测试,但得到退出代码0…
go测试
应该在测试失败时以代码1退出,并使用该值。对于各种初始化错误,它似乎使用退出代码2。如果您能提供一个演示问题的示例,这将非常有帮助。GoGo支持Go的本机测试包。既不需要web UI也不需要DSL;您可以单独使用其中一个。@Bert Verhees我运行go测试,看到一个失败的测试,但得到退出代码0…go测试
应该在测试失败时以代码1退出,并使用该值。对于各种初始化错误,它似乎使用退出代码2。如果您能提供一个示例来演示问题,这将非常有帮助。我运行了您的示例,并获得了失败测试的退出代码0否,您没有运行我的示例,您将其包装在其他代码中,然后运行它。这是一个完全不同的故事,它让我和你头疼。不要再这样做了。我运行了您的示例,并获得了失败测试的退出代码0。不,您没有运行我的示例,您将其包装在其他代码中,然后运行它。这是一个完全不同的故事,它让我和你头疼。不要再那样做了。