panicのテスト - golang

panicのテスト - golang

2020-05-28
golang, test

Goでパニックが発生するかどうかのテストです。

// Testing if testFunc calls panic.
// e.g.
// IsTestCallPanic(func(){
//   <place test target here.>
// })
func IsTestCallPanic(testFunc func()) (ok bool) {
	defer func() {
		if err := recover(); err == nil {
			ok = false
		}
	}()
	ok = true
	testFunc()
	return
}

// Test for test.
func TestIsTestCallPanic(t *testing.T) {
	isCalled := IsTestCallPanic(func() {
		var i interface{}
		if i == nil {
			panic("Hi, panic.")
		}
	})
	if !isCalled {
		t.Errorf("failed.")
	}
}