私は外部の第三者の問題のために合格しないかもしれない一連のテストをしています。 この状態が発生したときにテストを失敗させたくないのですが、認識したいと思います。Golangテストスクリプトはエラーではなく警告を発行できますか?
t.Errorf()
を発行することは、それ以降のすべてのテストを中止することになるため、考えられません。テストスクリプトがポストして残りのテストを続行するようなトリガができる「警告」がありますか?
私は外部の第三者の問題のために合格しないかもしれない一連のテストをしています。 この状態が発生したときにテストを失敗させたくないのですが、認識したいと思います。Golangテストスクリプトはエラーではなく警告を発行できますか?
t.Errorf()
を発行することは、それ以降のすべてのテストを中止することになるため、考えられません。テストスクリプトがポストして残りのテストを続行するようなトリガができる「警告」がありますか?
goテストツールはコンパイラのようなものです。コンパイラに何かコンパイルするかしないか、警告はありません。あなたが得ようとしている最も近いものは、t.Skipです。現在のテストの実行を停止しますが、失敗したとしてマークしません。しかし、go test
の出力には何も表示されませんので、go test -v
を使用する必要があります。
addExternal
関数が失敗した場合、t.Skipf
を使用するパッケージの例を次に示します。
package app
import "testing"
func add(a, b int) int {
return a + b
}
func addExternal(a, b int) int {
return 4
}
func divide(a, b int) int {
return a/b
}
func TestThing(t *testing.T) {
got := add(1, 2)
want := 3
if got != want {
t.Errorf("add(1, 2) = %d, want %d", got, want)
}
}
func TestExternalThing(t *testing.T) {
got := addExternal(3, 4)
want := 7
if got != want {
t.Skipf("addExternal(3, 4) = %d, want %d", got, want)
}
}
func TestAnotherThing(t *testing.T) {
got := divide(6, 3)
want := 2
if got != want {
t.Errorf("divide(6, 3) = %d, want %d", got, want)
}
}
これを実行した結果は次のとおりです。リターン・ステータスは0で、パッケージは私がt.Errorf
またはt.Fatalf
にt.Skipf
を変更した場合、私は、この出力
$ go test -v
=== RUN TestThing
--- PASS: TestThing (0.00s)
=== RUN TestExternalThing
--- FAIL: TestExternalThing (0.00s)
app_test.go:29: addExternal(3, 4) = 4, want 7
=== RUN TestAnotherThing
--- PASS: TestAnotherThing (0.00s)
FAIL
exit status 1
FAIL github.com/jcbwlkr/app 0.005s
$ echo $?
1
パッケージ内の他のテストを得ることかかわら
$ go test -v
=== RUN TestThing
--- PASS: TestThing (0.00s)
=== RUN TestExternalThing
--- SKIP: TestExternalThing (0.00s)
app_test.go:29: addExternal(3, 4) = 4, want 7
=== RUN TestAnotherThing
--- PASS: TestAnotherThing (0.00s)
PASS
ok github.com/jcbwlkr/app 0.006s
$ echo $?
0
ノートに合格したと考えられている注意してくださいまだ走っている。もし私がgo test -v ./...
のような複数のパッケージをテストしていたとしても、彼らはまだ走っていると思います。
これは私が探していたものです。ありがとう! –
これらの呼び出しをいつでも 'Logf'に置き換えることができますが、それらを見るにはverboseフラグを使う必要があります。 – squiguy