Goには標準でテスト機能が組み込まれています。
Goのソースに対して、簡単なテストを書いてみましょう。
環境
% sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.5
BuildVersion: 19F101
% go version
go version go1.14.6 darwin/amd64
サンプルのディレクトリ構造
今回のサンプルファイルは、下記のようになっています。
gotest
|-- app.go // アプリの処理 (アプリ名を返す関すのみ持っている)
|-- app_test.go // app.go の関数をテストする
|-- main.go // app.go の関数を呼び出す
main.go
package main
import (
"fmt"
)
func main() {
fmt.Println(AppName())
}
app.go
package main
func AppName() string {
return "My App Name"
}
app_test.go
package main
import (
"testing"
)
func TestAppName(t *testing.T) {
expect := "My App Name"
actual := AppName()
if expect != actual {
t.Errorf("%s != %s", expect, actual)
}
}
アプリの実行確認
まず、アプリが動作することを確認しましょう。アプリ名が出力されています。
% cd gotest
% go run main.go app.go
My App Name
Go のテスト
出力の[path]
は、各自環境でのフルパスになります。
% cd gotest
% go test
PASS
ok [path]/gotest 0.066s
オプション「-v」を付けると、テストの詳細が出力されます。
テストを複数実行する際に、活躍できそうです。
% go test -v
=== RUN TestAppName
--- PASS: TestAppName (0.00s)
PASS
ok [path]/gotest 0.135s
Go のテストを書く際の注意点
- テストファイル名の終端は「_test.go」でなければならない。
- テスト関数名は「Test」で始まらなければならない。
- テストファイルは、"testing"パッケージを宣言し、利用する。
- デフォルトでassertは用意されていないので、自作する必要がある。