Как вы печатаете в тесте 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 ответа:
структуры
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
-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 (c *T) Log(args ...interface{})
Log форматирует свои аргументы, используя форматирование по умолчанию, аналогичное Println, и записывает текст в журнал ошибок. Текст будет печатается только в случае сбоя теста или-test.флаг V устанавливается.