Почему тесты 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
Другие вопросы по тегам