Почему тесты GoConvey завершаются неудачно с кодом ошибки 0?
Мне нужно запустить свои тесты GoConvey как часть моей сборки. Как мне убедиться, go test
выходит с кодом выхода ошибки (не 0)?
2 ответа
Ок нашел ошибку:
У меня есть 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())
}
это решило проблему
Вы можете запустить goconvey как обычный тест, вы можете проверить это очень просто, написав небольшой тест, который дает предсказуемый результат, например
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 test x Failures:
* /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