カテゴリ: Kotlin 更新日: 2026/01/31

Kotlinの例外処理をテストでカバーする方法!初心者でも安心のやり方解説

Kotlinの例外処理をテストでカバーする方法
Kotlinの例外処理をテストでカバーする方法

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

生徒

「Kotlinでエラー処理を書いたんですけど、ちゃんと動くかどうか心配です……」

先生

「そういうときは、テストコードを使って確認できますよ。特に例外処理は、テストでしっかり確認するのが大事なんです。」

生徒

「えっ、エラーをテストできるんですか?やってみたいです!」

先生

「もちろんです。今回はKotlinで例外処理をテストでカバーする方法を、初心者にもわかりやすく説明しますね!」

1. Kotlinの例外処理とは?復習しよう

1. Kotlinの例外処理とは?復習しよう
1. Kotlinの例外処理とは?復習しよう

Kotlinにおける例外処理(エラー処理)とは、プログラムの実行中に予想外のトラブルが起きたときでも、処理を安全に続けるための仕組みです。もし例外処理を書いていないと、エラーが発生した瞬間にプログラムが止まってしまいます。

たとえば「0で割る」「存在しないデータを使う」といった操作は、初心者でもうっかり書いてしまいがちです。こうしたときに活躍するのがtry-catch文です。


fun divide(a: Int, b: Int): Int {
    return try {
        a / b
    } catch (e: ArithmeticException) {
        0
    }
}

この例では、a / bの計算中にエラーが起きる可能性を考えています。もしbが0だった場合、ArithmeticExceptionというエラーが発生しますが、catchブロックがそれを受け止め、代わりに0を返します。

つまり「問題が起きたら別の安全な処理に切り替える」のが例外処理の役割です。プログラムを途中で止めず、安定して動かすための大切な考え方として覚えておきましょう。

2. 例外処理のテストとは?

2. 例外処理のテストとは?
2. 例外処理のテストとは?

「例外処理のテスト」とは、エラーが起きそうな操作をわざと実行して、プログラムが途中で止まらずに、想定どおりに動くかを確認するテストです。特に例外は、普段の操作では再現しにくいので、テストで意識してチェックしておくと安心です。

たとえば、0で割ったときにArithmeticExceptionが出るか、または自分で書いたtry-catchがきちんと動いて「安全な値」を返しているか、といった点を確認できます。

初心者向け:テストは「答え合わせ」みたいなもの

「この操作をしたら、こうなるはず」という期待どおりに動くかを、コードで自動チェックするのがテストです。失敗したらすぐ気づけるので、修正もしやすくなります。

KotlinのテストではJUnit(じぇーゆーにっと)や、Kotlin標準のkotlin.testがよく使われます。JUnitは「正しく動くか確認するための道具」で、例外が起きるケースも安全に確認できます。


import kotlin.test.Test
import kotlin.test.assertEquals

class SimpleExceptionTest {

    fun safeDivide(a: Int, b: Int): Int {
        return try {
            a / b
        } catch (e: ArithmeticException) {
            0
        }
    }

    @Test
    fun testSafeDivideByZero() {
        val result = safeDivide(10, 0)
        assertEquals(0, result)
    }
}

この例は「0で割るとエラーになりそうだけど、例外処理のおかげで0が返る」という動きをテストしています。こうして例外が絡む処理も、テストで落ち着いて確認できます。

3. 例外が発生することをテストする書き方

3. 例外が発生することをテストする書き方
3. 例外が発生することをテストする書き方

「例外が発生すること」をテストしたいときは、エラーが起きる状況をあえて作り、その例外が本当に出るかを確認します。ここで便利なのがassertFailsWithです。

assertFailsWithは「この処理を実行したら、指定した例外が出るはず」という期待をチェックする関数で、例外が出なかった場合はテストが失敗になります。つまり、想定外に処理が通ってしまうバグにも気づきやすくなります。


import kotlin.test.Test
import kotlin.test.assertFailsWith

class ExceptionTest {

    @Test
    fun testDivideByZeroThrowsException() {
        assertFailsWith<ArithmeticException> {
            val result = 10 / 0
        }
    }
}

このテストでは、10 / 0を実行するとArithmeticExceptionが発生することを確認しています。もし別の例外が出たり、例外が出なかったりするとテストは失敗します。

初心者向け:何を「期待」しているテストなのかを意識しよう

assertFailsWith<ArithmeticException>と書いた時点で、「ArithmeticExceptionが出るのが正解」というルールをテストに決めています。例外の種類を間違えると失敗するので、どんなエラーが出るかを合わせて覚えると理解が深まります。

4. 例外が出ないことをテストする方法

4. 例外が出ないことをテストする方法
4. 例外が出ないことをテストする方法

逆に、エラーが出ないことも確認できます。たとえば、正常な計算でエラーが出ないかをチェックできます。


import kotlin.test.Test
import kotlin.test.assertEquals

class SafeDivideTest {

    fun safeDivide(a: Int, b: Int): Int {
        return try {
            a / b
        } catch (e: ArithmeticException) {
            0
        }
    }

    @Test
    fun testSafeDivideWithValidInput() {
        val result = safeDivide(10, 2)
        assertEquals(5, result)
    }
}

このテストでは、10 ÷ 2 = 5になることをチェックして、ちゃんと計算できているかを確認しています。

5. catchブロックの中身をテストしたいとき

5. catchブロックの中身をテストしたいとき
5. catchブロックの中身をテストしたいとき

次は、catchの中で何をしているかを確認する方法です。例えばログを出したり、別の値を返したりしているか確認したいときです。

簡単な例では、0で割ったときに0を返すようにして、その戻り値をチェックします。


import kotlin.test.Test
import kotlin.test.assertEquals

class DivideTest {

    fun safeDivide(a: Int, b: Int): Int {
        return try {
            a / b
        } catch (e: ArithmeticException) {
            0
        }
    }

    @Test
    fun testSafeDivideByZeroReturnsZero() {
        val result = safeDivide(10, 0)
        assertEquals(0, result)
    }
}

このように、catchブロックで何か処理をしたあとの結果もテストで確認できます。

6. テストの実行で失敗を防ぐポイント

6. テストの実行で失敗を防ぐポイント
6. テストの実行で失敗を防ぐポイント

テストで例外処理を正しくカバーするためには、次のようなポイントに気をつけましょう。

  • どんなエラーが起こるか事前に知っておく
  • エラーの種類(例:ArithmeticException)を正しく指定する
  • 期待される動作(値やメッセージ)を明確にする
  • catchの中で何をしているかに注目する

これらを意識すれば、テストで例外処理のカバーがしっかりできます。

7. Kotlin初心者でもできる例外処理テストのコツ

7. Kotlin初心者でもできる例外処理テストのコツ
7. Kotlin初心者でもできる例外処理テストのコツ

初心者にとって、テストを書くこと自体が難しそうに感じるかもしれません。でも、例外処理のテストは、少しずつ書きながら慣れていくのがコツです。

まずはassertFailsWithassertEqualsの2つを覚えて、エラーが起きるときと起きないときの両方をチェックできるようにしましょう。

慣れてきたら、リストが空のときの処理や、null(ぬる:中身がない状態)に対する処理など、色々なパターンをテストしてみると練習になります。

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

Kotlinの例外処理をテストで確実にカバーするためには、例外が発生するパターンと発生しないパターンの両方を丁寧に確認することが大切です。例外処理はプログラムの安全性を守るための重要な要素であり、正しく動作しなければアプリケーションが途中で停止したり、想定外の動作を引き起こす原因になります。そのため、try-catch文が期待どおりの挙動をしているか、catchブロックで行っている処理が意図した結果を返しているかをテストで確認しておくことは、初心者から経験者まで必ず意識したいポイントです。 テストで例外処理を扱う際には、assertFailsWithを使って指定した例外が実際に発生するかどうかをチェックし、assertEqualsを用いて例外が出ない場合の戻り値や処理結果を確認します。特にKotlinではエラーの種類が重要で、発生する例外の型を正しく指定しないとテストが意図と異なる形で成功してしまうこともあります。そのため、ArithmeticExceptionやNullPointerExceptionなど、状況に応じた例外の種類を明確に把握し、テストケースに反映させることが求められます。 また、catchブロックに記述している処理内容を確認するテストも、例外処理の品質を高めるうえで非常に有効です。意図したログが出力されているか、別の値を返しているか、場合によっては再スローしているかなど、例外発生時の動きはアプリケーション全体の挙動に影響するため、確実に確認しておきたい部分です。例外処理のテストに慣れてくると、複雑なロジックの中でも安全に動作するコードを作れるようになり、エラーに強いアプリケーション開発につながります。 例外処理テストは難しいと思われがちですが、基本的なパターンを押さえて繰り返し書くことで自然に理解が深まります。特に初心者は、失敗を怖がらずにまずは例外を発生させてみるところから始め、どう動くかを確認する過程を楽しむことが大切です。こうした基礎の積み重ねが、実践的なエラー対応や高品質なテストコードの作成へと繋がっていきます。

サンプルプログラム

以下は、例外が発生するケースと発生しないケースの両方をテストし、catchブロックの結果まで確認する流れをひとつにまとめたサンプルです。例外処理の理解だけでなく、テストコード全体の流れを確認する練習としても役立ちます。


import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertFailsWith

class ErrorHandlingTest {

    fun safeOperate(a: Int, b: Int): Int {
        return try {
            a / b
        } catch (e: ArithmeticException) {
            -1
        }
    }

    @Test
    fun testThrowsExceptionWhenDivideByZero() {
        assertFailsWith<ArithmeticException> {
            val x = 20 / 0
        }
    }

    @Test
    fun testSafeOperateReturnsMinusOne() {
        val result = safeOperate(20, 0)
        assertEquals(-1, result)
    }

    @Test
    fun testSafeOperateNormalValue() {
        val result = safeOperate(20, 5)
        assertEquals(4, result)
    }
}

このサンプルでは、正常な値での計算、ゼロ除算での例外発生、catch内の戻り値確認という3パターンを網羅しています。例外処理は複雑に見えても、ひとつひとつ確認していくことで確実に理解を深めることができます。

先生と生徒の振り返り会話

生徒

「例外処理のテストって難しそうだと思っていましたけど、assertFailsWithとassertEqualsを使えば基本はできるってわかりました!」

先生

「うん、その二つを理解しておけば例外が出る場合と出ない場合の両方を確認できますから、とても便利なんですよ。」

生徒

「catchブロックの中身までテストできるっていうのも驚きでした。例外時の動作ってすごく大事なんですね。」

先生

「その通りです。エラーが発生したあとの動きが正しいかどうかで、アプリ全体の信頼性が変わってきますからね。」

生徒

「最初はこわかったけど、例外をわざと起こしてみるのって意外と楽しいですね!どう動くのかがよくわかります。」

先生

「その姿勢はとても良いですよ。動きを確かめながら学ぶと理解が深まりますし、実践でも役に立ちます。」

生徒

「今日学んだことを活かして、他の関数や処理もテストしてみます!」

先生

「ぜひ挑戦してみてください。例外処理もテストも、経験を積むほど自然に書けるようになりますよ。」

関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.7
Java&Spring記事人気No7
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説