Как вы печатаете в тесте Go, используя пакет "тестирование"?


Я запускаю тест в Go с инструкцией для печати чего-то (т. е. для отладки тестов), но он ничего не печатает.

func TestPrintSomething(t *testing.T) {
    fmt.Println("Say hi")
}

когда я запускаю go test на этот файл, это вывод:

ok      command-line-arguments  0.004s

единственный способ действительно заставить его печатать, насколько я знаю, - это напечатать его через t. Error (), например:

func TestPrintSomethingAgain(t *testing.T) {
    t.Error("Say hi")
}

который выводит это:

Say hi
--- FAIL: TestPrintSomethingAgain (0.00 seconds)
    foo_test.go:35: Say hi
FAIL
FAIL    command-line-arguments  0.003s
gom:  exit status 1

я погуглил и просмотрел руководство, но ничего не нашел.

2 66

2 ответа:

структуры testing.T и testing.B как есть .Log и .Logf метод, который звучит, чтобы быть то, что вы ищете. .Log и .Logf подобное fmt.Print и fmt.Printf соответственно.

смотрите дополнительную информацию здесь:http://golang.org/pkg/testing/#pkg-index

fmt.X печать заявления do работа внутри тестов, но вы найдете их вывод, вероятно, не на экране, где вы ожидаете его найти и, следовательно, почему вы должны использовать методы ведения журнала в testing.

если, как в вашем случае, вы хотите видеть журналы для тестов, которые не терпят неудачу, вы должны предоставить go test the -v флаг (v для многословия). Более подробную информацию о флагах тестирования можно найти здесь:http://golang.org/cmd/go/#hdr-Description_of_testing_flags

например,

package verbose

import (
    "fmt"
    "testing"
)

func TestPrintSomething(t *testing.T) {
    fmt.Println("Say hi")
    t.Log("Say bye")
}

go test -v
=== RUN TestPrintSomething
Say hi
--- PASS: TestPrintSomething (0.00 seconds)
    v_test.go:10: Say bye
PASS
ok      so/v    0.002s

команда go

описание флагов тестирования

-v
Verbose output: log all tests as they are run. Also print all
text from Log and Logf calls even if the test succeeds.

тестирование

func (*T) Log

func (c *T) Log(args ...interface{})

Log форматирует свои аргументы, используя форматирование по умолчанию, аналогичное Println, и записывает текст в журнал ошибок. Текст будет печатается только в случае сбоя теста или-test.флаг V устанавливается.