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
Googleで検索してマニュアルを調べましたが、何も見つかりませんでした。
構造体 testing.T
と testing.B
の両方に .Log
と .Logf
があり、そのサウンドが探しているものになります。 .Log
および .Logf
は、それぞれ fmt.Print
および fmt.Printf
と類似しています。
詳細はこちらをご覧ください: http://golang.org/pkg/testing/#pkg-index
fmt.X
print文doはテスト内で動作しますが、出力はおそらく画面上にあるはずで、それを見つけることが期待されるため、なぜそうする必要があるのでしょうかtesting
のロギングメソッドを使用します。
あなたの場合のように、失敗していないテストのログを表示したい場合は、go test
に-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{})
ログは、Printlnに類似したデフォルトの書式設定を使用して引数を書式設定し、エラーログにテキストを記録します。テキストは、テストが失敗するか、-test.vフラグが設定されている場合にのみ印刷されます。
テストのために時々私は
fmt.Fprintln(os.Stdout, "hello")
また、次の場所に印刷できます。
fmt.Fprintln(os.Stderr, "hello)