カテゴリ: Go言語 更新日: 2026/01/02

Go言語のテストの基本!testingパッケージを使った単体テスト入門

Go言語のテストの基本!testingパッケージを使った単体テスト入門
Go言語のテストの基本!testingパッケージを使った単体テスト入門

先生と生徒の会話形式で理解しよう

生徒

「先生、Go言語で作ったプログラムの動きが正しいかどうかを確認する方法ってありますか?」

先生

「はい、Go言語にはtestingというパッケージがあって、単体テストと呼ばれる方法で関数や処理が正しく動くかを確認できます。」

生徒

「単体テストって、どんなことをするんですか?」

先生

「簡単に言えば、プログラムの小さな部分を実際に動かして、期待通りの結果が返ってくるかをチェックする作業です。」

生徒

「なるほど。具体的にはどう書けばいいですか?」

先生

「では、まず基本的なテストの書き方から見ていきましょう。」

1. testingパッケージとは?

1. testingパッケージとは?
1. testingパッケージとは?

Go言語のtestingパッケージは、プログラムの関数や処理が正しく動くかを確認するための標準的なツールです。パッケージとは、機能やコードをまとめたまとまりで、ライブラリのようなものです。testingを使うと、自動でテストを実行でき、手作業で確認する手間が省けます。

2. 単体テストの基本構造

2. 単体テストの基本構造
2. 単体テストの基本構造

単体テストは、テストしたい関数ごとにテスト関数を作ります。テスト関数の名前はTestで始め、引数にt *testing.Tを受け取る形にします。tを使って、テストの結果を報告します。


package main

import "testing"

func Add(a, b int) int {
    return a + b
}

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
        t.Errorf("Add(2,3) = %d; want 5", result)
    }
}

この例では、Add関数が正しく2+3を計算できるかをチェックしています。期待する結果は5なので、それと違った場合にエラーとして報告されます。

3. t.Errorfの意味と使い方

3. t.Errorfの意味と使い方
3. t.Errorfの意味と使い方

t.Errorfは、テストが失敗した場合にエラーメッセージを出力するためのメソッドです。t.Failt.Fatalと違い、テストを途中で止めずに複数のチェックを続けることができます。これにより、一度のテストで複数の確認を行うことが可能です。

4. 複数のケースをまとめてテストする

4. 複数のケースをまとめてテストする
4. 複数のケースをまとめてテストする

同じ関数に対して、異なる入力値をテストしたい場合は、テーブル駆動テストという方法を使います。テーブル駆動テストでは、テストケースを配列にまとめてループで回すことで効率的にチェックできます。


func TestAddTable(t *testing.T) {
    tests := []struct {
        a, b int
        want int
    }{
        {1, 1, 2},
        {2, 3, 5},
        {10, 5, 15},
    }

    for _, tt := range tests {
        result := Add(tt.a, tt.b)
        if result != tt.want {
            t.Errorf("Add(%d,%d) = %d; want %d", tt.a, tt.b, result, tt.want)
        }
    }
}

この方法で、一つ一つ手で書かなくても複数のパターンをテストできます。

5. テストの実行方法

5. テストの実行方法
5. テストの実行方法

Go言語のテストは、コマンドラインでgo testを使って実行します。テストファイルはxxx_test.goという名前にする必要があります。例えば、上記のAdd関数のテストが書かれたadd_test.goを用意し、ターミナルで次のコマンドを実行します。


go test

テストが全て成功すれば「ok」と表示され、失敗した場合はエラー内容が出力されます。これにより、プログラムが正しく動くかをすぐに確認できます。

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

6. 初心者向けのテストのコツ

6. 初心者向けのテストのコツ
6. 初心者向けのテストのコツ

テスト初心者は、まず関数ごとに簡単な入力値と期待値を決めてチェックすることから始めると良いです。また、テストコードも読みやすく書くことが大切です。エラー時のメッセージは、どの入力で失敗したかがわかるように書くと、原因の特定が容易になります。

Go言語の単体テストはシンプルで、テストの作成と実行が非常に簡単です。testingパッケージを使いこなすことで、プログラムの品質を高めることができます。

関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のスコープとは?ローカル変数・グローバル変数の違いと使い分け
New2
Go言語
Go言語の構文ルールまとめ!インデント・セミコロンなど最初に知っておくポイント
New3
Kotlin
KotlinのwithTimeoutでタイムアウト処理を設定しよう!初心者にもわかる非同期の安全な止め方
New4
Go言語
Go言語のマップの順序保証がない理由と扱い方の工夫をやさしく解説!初心者でもわかる基本知識
人気記事
No.1
Java&Spring記事人気No1
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Kotlin
Kotlinのsettings.gradleファイルを完全解説!初心者でもわかるプロジェクト設定の基本
No.3
Java&Spring記事人気No3
Go言語
Swiftの配列(Array)の使い方を完全ガイド!初心者でもわかるデータのまとめ方
No.4
Java&Spring記事人気No4
Go言語
Go言語でREST APIを作る設計と実装パターン完全ガイド!初心者でもわかるAPI開発
No.5
Java&Spring記事人気No5
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.6
Java&Spring記事人気No6
Go言語
Go言語のSQLインジェクション対策を完全解説!初心者でも安全なデータベース操作がわかる
No.7
Java&Spring記事人気No7
Go言語
Go言語のgo installコマンドの役割とインストール先の仕組みを徹底解説!
No.8
Java&Spring記事人気No8
Go言語
Go言語のトランザクション処理を完全解説!Begin・Commit・Rollbackを初心者向けにやさしく理解