Go言語 ~基礎編~ 自動テスト

go

今回は、自動テストについて学びましょう。

プログラムの品質を保つために、プログラマがテストコードを書くことは必須事項になりつつあります。

学習記事まとめ

テストツール

Go言語には、テストモジュールである”testing”パッケージが組み込まれています。

まずは、実際にプログラムを作成しましょう。

最初に、プロダクトコードとテストコードを格納するフォルダとファイルを用意します。

Go言語ではこのように、テスト対象のファイルと同階層にテストファイルを格納します(必須ではありません)。そして重要なのが、”XXXX_test.go“と命名する必要があります。そうしなければ、テストが実行されません。

先にプロダクトコードを記載します。

引数として渡した値を足し算するか、引き算するかの簡単なプログラムです。

Go言語でのテストは以下のように記述します。

関数名にもルールがあり、「TestXXXX」と命名する必要があります。

このテストを実行するために、terminal上で次のコマンドを実行します。

上記の結果は、テストがPASSしたことを表します。

ちなみに、テストが失敗した場合は次のように表示されます。

Errorfメソッドでエラーメッセージ操作

fmtパッケージのErrorf関数と同様にtesting関数もErrorf関数を持っており、この関数を利用してカスタマイズしたエラーメッセージを作成できます。

arithmeticディレクトリを作成し、その中にmath.goとmath_test.goを作成してください。

このテストはパスします。

expect変数の中身をテストが失敗するように変更しましょう。

テストを実行します。

一目でわかりやすいエラーメッセージになりましたね。

ヘルパー関数

テストファイルに記載された関数は、先頭が”Test”になっていなければ、テストコードとは見なされません。

そのため、以下のようにヘルパー関数を実装し、一つ一つの関数の処理を簡潔に書くことが可能になります。

テスト関数を指定して実行

go test に vフラグを付与するとテスト名を取得できます。

テスト関数名の一部を指定してテストを実行するには、runオプションを付与します。

構造体(Struct)を利用する

Structを利用したテストパターンも確認しましょう。

データパターンをStructに入れてfor文で回してあげれば、大量のテストパターンをテストできますね。

まとめ

KOUKI
KOUKI

最後にこの章で学んだことをまとめます。

テスト自動テストまとめ
・ go testにて、テストコードを実行する
・ テストファイル名は、”XXXX_test.go”とする
・ 必須ではないが、テストファイルはテスト対象ファイルと同一パッケージに配置する
・ テストには、Go言語の組み込みパッケージであるtesingパッケージを利用する
・ テスト関数は、TestXXXX名で開始する
・ エラーメッセージのカスタマイズには、t.Errorf関数を利用する

次回

次回は、Webアプリを作成します。

参考書籍

コメントを残す