0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JUnitとは?初学者向けKotlinでのテストケース

Posted at

はじめに

こんにちは。最近Androidアプリ開発を始めたばかりの初学者です。今回は、アプリ開発でよく聞くJUnitについて、実際に手を動かして学んだ内容をまとめてみました。
・JUnitとは?
・テストの書き方は?
・Android Studioの注意点は?
など、初心者実体験ベースで説明していきます。

JUnitとは?

まず最初にそもそもJUnitとは
⇒JUnitは、JavaやKotlinなどで使える単体テスト(ユニットテスト)用のフレームワークです。
「関数が正しい出力を返すか?」「意図しない挙動をしていないか?」などを、コードでチェックすることができます。

バグの早期発見や保守性の向上につながるそうです。

環境

環境はAndroid Studioで、Kotlinでコードは書いています。
当たり前かもしれませんが、一応VScodeとかのIDEでもできるらしいけどAndroid Studioがいろいろ用意してくれてるから楽。

今回は簡単な足し算関数を用いてテストを試しました。

Add.kt

package com.example.junit_test

fun add(a: Int, b: Int): Int {
    return a + b
}

Add_test.kt

package com.example.junit_test

import org.junit.Assert.assertEquals
import org.junit.Test

class MathUtilsTest {
    @Test
    fun testAdd() {
        assertEquals(5, add(2, 3))
    }
}

実行手順と注意(自分が詰まったとこ)

まず最初にディレクトリ構造に注意してください。

ディレクトリ構造.png
図1. ディレクトリ構造

①com.example.(プロダクト名)/Add.kt
を用意してください。次に、
②com.example.(プロダクト名)(test)/Add_Test.kt
を用意してください。

(test)・・・ローカルテスト用、サクッと実行するとき。←今回はこっち
(androidTest)・・・実機やエミュレーターの時のテスト用。UIテストなど

実行結果

実行結果_pass.png
図2. 正常な実行結果

問題なくテストが通った時はこのようにtests passed:1と表示されます。
実行の際にはAdd_Test.ktのclass MathUtilsTestの横の実行ボタンを押してください。いつも通り関数横の実行ボタンでもOKです。

expected6.png
図3. 2 + 3 = 6の実行結果

次にエラーになる実行をしてみました。実行結果として、
Expected :6
Actual :5
と親切に教えてくれています。

また、複数テストしたい場合にはtestAdd1(), testAdd2など名前を変える必要があります。

@Test
fun testAdd1() { ... }

@Test
fun testAdd2() { ... }

学び・感想

・AndroidStudioが至れり尽くせりで、とても便利だと改めて感じました。
・よくあるコーディングテスト、AtCoderとかの裏側の正誤判定は裏でこんなプログラムが回っているのかなぁと感じました。
・慣れない記事を書くことも楽しかったです。今後もいろいろと学んでいきたいと思います。

※本記事のコードはすべて筆者の個人学習目的で作成したものであり、GitHub連携や既存プロジェクトとは無関係です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?