April 2022
Beginner to intermediate
464 pages
6h 44m
Japanese
GoのテストはTable Driven Test(以下、TDT)と呼ばれる形式で実装されることが大半です。Go公式のドキュメント 1 やGo公式のWiki 2 に記載されていて、標準パッケージのテスト 3でも利用されています。TDTはテスト形式として特殊なものではなく、PythonやJavaでparametrized testと呼ばれているテスト形式とよく似たものです。IDEで自動生成するテストコードの雛形もこのTDT形式ですし、Goでユニットテストを書く際は、まずTDTの形式に慣れることが大切です。
TDTはテストの入力値と期待値をまとめて定義し、テストの実行箇所を1箇所にまとめる形式のことです。テストの可読性を高め、コードの重複を排除できる点で優れています。以降で、各項目について整理していきます。
テスト対象として、以下の Calc()関数を例にします。
func Calc(a, b int, operator string) (int, error) {
switch operator {
case "+":
return a + b, nil
case "-":
return a - b, nil
case "*":
return a * b, nil
case "/":
if b == 0 {
return 0, fmt.Errorf("0除算は未定義です")
}
return a / b, nil
}
return 0, fmt.Errorf("予期しない演算子 %v が指定されました", operator ...Read now
Unlock full access