ほげほげほげほ

ただのメモ置き場です。基本的にプログラム関連のメモ。

golangのテストについて

Go言語を調べている間、いろいろなライブラリとかサンプルコードとか見てるとテストファイルを同じ階層に入れていました。 goはそういうお作法なのかと思い今回実験してみました。

今回のぎもん

こんな感じになってる構成がおおいけど、同じ階層にテストファイルをいれないといけないのか

▶ tree
.
├── controller
│   ├── hogehoge.go
│   ├── hogehoge_test.go

試してみた

フォルダ構成

▶ tree
.
├── controller
│   └── hogehoge.go
├── test
│   └── hogehoge_test.go

実装

import (
    "fmt"
    "testing"
    "../controller"
)

func TestHogehoge(t *testing.T) {
    count := 1
    for i := 0; i < count; i++ {
        key := fmt.Sprintf("key_%d", i)
        value := fmt.Sprintf("value_%d", i)     
        println("---------------------")
        controller.Hogehoge(key, value)
    }
}

実行結果

---------------------  ← hogehoge_test.go での出力
/////////////////////  ← hogehoge.go での出力
PASS
ok      _/hogehogehoge/test 0.106s

結果

testファイルを同じ階層にいれないといけないということはありませんでした。
しかし、同じ階層(package)内に入れないとpublic function以外参照できないので同じ階層に入れている様でした。
ちょっとどうにかしたいけどこれはしょうがないんですね…うーん。

それでは〜