1
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?

More than 3 years have passed since last update.

[Kotlin] 初学者がテストの勉強した話

Last updated at Posted at 2020-07-25

#きっかけ
独学でandroidアプリを開発しています。
アプリを実際に動かすことはできても、テストには触れてきませんでした。
参考にしていた本にも載っていなかったので、ググりながら勉強して行きます。
#テストって何?
テストの目的は以下の通り

不具合を発見する
仕事が完了したことを確認する
システムをより優れたものに改良する

(引用元)https://www.techscore.com/tech/Java/Others/JUnit/1/

なるほどなるほど。
動いているからOK、というものではないのですね。
#テストの種類
テストは大きく3種類
小規模テスト・・・クラスごと
中規模テスト・・・モジュールレベル
大規模テスト・・・複数のモジュールを跨いだテスト

今回は小規模テスト(Unitテスト)をやって行きます。Unitテストの中にも2種類あります
##ローカル単体テスト
module-name/src/test/java/ に書き込む。
・JVMで実行
・androidフレームワークの依存関係が含まれないとき
・時間を最小限に抑えられる

##インストゥルメント化単体テスト
module-name/src/androidTest/java/ に書き込む
・ハードウェア エミュレータで実行
・androidフレームワークの依存関係が含まれるとき
・時間がかかる

基本的にはローカル単体テストで、実機テストの際にインスト(以下略)を行うと良いそうです。
#単体テストの準備

build.gradle(app)
dependencies {
        // JUnit 4 のフレームワーク
        testImplementation 'junit:junit:4.12'
    }

ローカル単体テストならこれだけでOK
Android Studioでアプリ作成をすると初めから入力されていました。

#実行手順
・テストクラスを作成
・テストメソッドを作成
・Run
##テストしたいクラスを作成
○クラス名にカーソルを合わし、shift+Command+T
Create New Testを選択する
○クラス名を右クリックからのGo to から選んでもOK
今回は最初に作られるメインアクティビティからテストクラスを作成しました。
スクリーンショット 2020-07-25 9.11.45.png
Create Testでライブラリーを選択します。
スクリーンショット 2020-07-24 20.31.16.png
Testing libraryからJunit4を選択しました。
##Junitって?
引用

JUnitはJavaプログラム単体テスト用のフレームワークです。みんなが共通のテストフレームワークをもつことで、他人のテストプログラムの修正を容易にします。

選べるバージョンは3〜5までですが、ここでは4を選択します。
一番上のGroovy JUnitはこの方の記事が参考になりました。
工数削減!GroovyでJUnitをシンプルに

スクリーンショット 2020-07-24 20.33.25.png

Generateの項目にチェックを入れると、あらかじめ以下のメソッドを作成してくれます。

○setUp/@ Before
各メソッドの呼び出し前に実行
○tearDown/@ after
各メソッドの終了後に実行

テストメソッドで重複する項目がある場合に使用します。

##テストメソッドをかく
assert〜で始まるメソッドが用意されています。どんな種類があるかはこちら

参考:Junit5との違い

#クラスからメソッドを引っ張る

class MainActivityTest {

    @Test
    fun testAddCalculate() {
    //テストしたいクラスをインスタンス化
    val main = MainActivity()

    //Mainクラス内のaddCalculateメソッドを使用する
       val addNum = main.addCalculate(3,2)
        Assert.assertEquals(7, addNum)
    }
}

想定される答えや真偽と合えばテストは成功、違えばメッセージが表示されます
スクリーンショット 2020-07-25 9.03.42.png
スクリーンショット 2020-07-25 9.04.04.png

#参考
テストの基礎
ローカル単体テストを作成する
TECHSCORE
テストエンジニア
工数削減!GroovyでJUnitをシンプルに
JUnit5 使い方メモ

単体テストを実行するまでの流れはわかりました。
実戦に耐えうるテストにするにはどうすれば良いか、引き続き加筆修正していきます。

1
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
1
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?