golang 공부를 이제 시작한 초보입니다.
표준 라이브러리 testing을 사용할때, go test 말고 간단한 TestRunner(예를 들어 HTMLTestRunner)을 만들고 싶어서 testing 쪽을 보고 있는데요.
testing.T가 기본적으로 struct이라서 testing.
tRunner의 코드와 비슷한 다른 TestRunner을 만들기 어려운것 같습니다. (제가 golang 관련 공부거 거의 없어서 잘못 이해하고 있는 것 같기도 합니다.)
그래서 테스트 함수의 인자를 struct가 아닌 interface으로 받고 TestRunner을 만들면 가능하지 않을까 생각했었는데요.
type T interface { .... }
func TestTest(t T) { ... }
t := &testing.T{}
TestTest(t)
으로 하면 동작이 되는데. go test으로 실행하면 동작이 안되더군요..
https://gist.github.com/anarcher/0e5fa8040f3ea9fc218b$ go run testing.go
2013/07/29 14:33:53 true
$ go test
# testmain
/tmp/go-build711170599/_/home/anarch/hg/trashcan/codes/golang/testing/test/_test/_testmain.go:16: cannot use main.TestTest (type func(main.T)) as type func(*testing.T) in field value
FAIL _/home/anarch/hg/trashcan/codes/golang/testing/test [build failed]
질문은 testing.T의 interface을 만들고 interface을 사용하는 함수를 정의하면 interface에 준수하는 어떤 type(struct)가 넘어오더라도 동작을 할것이라고 기대했는데요.
t = &testing.T{} 으로 만들어서는 동작을 하는데. go test에서는 동작을 하지 않는 이유가 궁금해서 질문을 던집니다.
읽어 주셔서 감사합니다.