testing.afterを自由にしたかった。テストの最後になんかしたかった。golang
追記
1.4から普通にできるようになった。
なにかと最後に掃除したりしたい例があった。
要は、application側が、
package main import ( "xxx.com/xxx/xxx/models" ) func main() { db, err := sql.Open() if err != nil { panic(err) } defer db.Close models.InitDbmap(db) // main }
やらなんやら、別にこの例はどうでも良いけど、全体の最後になにかするのが出来るんだから、testing.Mainも自由にやりたい、もしくはtesting.after書きかえたい、なにかを追加したいみたいな希望があった。
go test
は Package.TestGoFiles を順にロードして、testing.T.Testsにappendしてってるので、その最後に来るようにすれば良いかなーでもなーとか思ってる時に http://golang.org/src/pkg/net/http/z_last_test.go を発見したので、とりあえずこういう感じてやってこうかと思ってやってみている。
z_last_test.go
package models import ( "os/exec" "strings" "testing" ) func TestThisFileIsLastTestFile(t *testing.T) { cmd := exec.Command("go", "list", "-f", "{{.TestGoFiles}}") output, err := cmd.CombinedOutput() if err != nil { panic(err) } tests := strings.Split(strings.Trim(string(output), " \n[]"), " ") lastTest := tests[len(tests)-1] if lastTest != "z_last_test.go" { t.Errorf("expected last_test is z_last_test.go, but got %v", lastTest) } } func TestHogeHoge(t *testing.T) { // なんか }