GOエッセイ-ユニットテスト-基礎テスト
ユニットテスト
先日、リーダーは私にGOユニットのテストを勉強させ、グループ内で共有させました.ここ数日、インターネットで資料と実践を調べた.以下をまとめる.
基礎知識:GOは私たちにテストフレームワークを提供して、
go test
、私たちに簡単にユニットテストを行うことができます.しかし、以下のルールを守らなければなりません.
は、被測定方法が存在するgoファイルのファイル名である.(go testを実行することもできますが、統一された仕様を遵守する必要があります)以上のルールを守れば、GOユニットテストを簡単に作成できます.
インターネットで資料を調べていると、次のような文章が書かれています.
テストコードのファイルの配置の位置は自由ですか?すぐにGOが本当にスマートだと感じて、待ちきれずに試してみました.
パスを指定する必要がありますか?
この言葉の意味が理解できなかったのかもしれませんが、個人的には、一つのカタログ(バッグ)の下に置いたほうがいいと思います.
package
も自由に書けますか?やってみると結論が出ない.簡単なユニットテスト例addを書く.go
package add
func Add(a, b int) int{
return a+b
}
add_test.go
package add
import "testing"
func TestAdd(t *testing.T){
if sum:=Add(1,2); sum!=3{
t.Error("fail")// f(x)=y, want z
} else {
t.Log("success")
}
}
go test -v
でテスト結果が表示されます(ここに私が踏んだ小さな穴があります.テストファイルを指定したいときは
go test file_test.go
が間違っています.後でテストされたファイルを接続する必要があるからです.go test file_test.go file.go
)最も簡単な基本テストにすぎません.もう1つのテスト方法は、テーブルグループテストと呼ばれます.実は複数の基本テストです.上のテストを簡単に改造
package add
import "testing"
func TestAdd(t *testing.T){
var tests = []struct{
date []int
want int
}{
{[]int{1, 2}, 3},
{[]int{2, 5}, 7},
{[]int{3, 9}, 11},
}
for _,v := range tests{
if sum:=Add(v.date[0], v.date[1]); sum!=v.want{
t.Errorf("Add(%d, %d) = %d, want %d", v.date[0], v.date[1], v.date[0]+v.date[1], v.want)
} else {
t.Log("success")
}
}
}
実行結果は、各テスト結果のセットを明確に表示します.この形式では、簡単にテスト例を追加することができます.