LoginSignup
0
0

More than 1 year has passed since last update.

go言語の基本のテスト Hello world的な

Posted at

Goのテスト入門

TDDをしたいのでテストを書いてみよう。

基本のテスト Hello world的なテスト

役に立たないけど、基本的なテスト

ファイル:main.go

import "fmt"
// テスト
func isOne(i int) bool {
	if i == 1 {
		return true
	} else {
		return false
	}
}
func main() {

	fmt.Println(isOne(1))
	fmt.Println(isOne(0))

}

関数 isOneをテストしたい場合、テストファイルを作成する。ファイル名:main_test.goで作成する。

package main

//テスト
import "testing"

var Debug bool = false

func TestIsOne(t *testing.T) {
	i := 1
	if Debug {
		t.Skip("スキップさせる")
	}
	v := IsOne(i)
	if !v {
		t.Errorf("%v != %v", i, 1)
	}
}

IsOne関数をテストしたいので、TestIsOneを定義します。引数にtesting.Tパッケージを渡してあげます。
エラーの場合は、t.Errorでエラーを出力します。
エラーがなく処理が終わった場合は、okが出力されます。

テストの実行は以下のように入力します。
go test

成功の場合は以下のように出力されます。

$ go test -v
=== RUN   TestIsOne
--- PASS: TestIsOne (0.00s)
PASS
ok      goTest  0.232s

失敗した場合は以下のように出力されます。

$ go test 
--- FAIL: TestIsOne (0.00s)
    main_test.go:15: 0 != 1
FAIL
exit status 1
FAIL    goTest  0.149s

基本のテストその2 パッケージのテスト

alibというディレクトリを作成して、alib.goファイルを作成する。

package alib

func Average(s []int) int {
	total := 0
	for _, i := range s {
		total += i
	}
	return int(total / len(s))
}

Average関数をテストしたいので、テストファイルをalibディレクトリに作成する。
ファイル名:alib_test.go

package alib

import "testing"

var Debug bool = false

func TestAverage(t *testing.T) {
	if Debug {
		t.Skip("スキップします")
	}

	v := Average([]int{1, 2, 3, 4, 5})
	if v != 3 {
		t.Errorf("%v !~!= %v", v, 3)
	}

}

テストを実行します。
go test ./alib

$ go test ./alib 
ok      goTest/alib     0.386s

基本のテストは以上です。
次回は、テスティングフレームワークtestifyを使ってみようと思います。

参考させていただいたサイト

【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)
golang初心者にはおすすめの教材です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0