Android/kotlin/UnitTest/基本
提供: 初心者エンジニアの簡易メモ
テスト作成
一旦プロジェクトをAndroidStudioのkotlinで新規で作る
以下が作られてるので確認。
UnittestApplication/app/src/test/java/com/example/unittestapplication/ExampleUnitTest.kt
package com.example.unittestapplication import org.junit.Test import org.junit.Assert.* /** * Example local unit test, which will execute on the development machine (host). * * See [testing documentation](http://d.android.com/tools/testing). */ class ExampleUnitTest { @Test fun addition_isCorrect() { assertEquals(4, 2 + 2) } }
app/src/androidTest/java/com/example/unittestapplication/ExampleInstrumentedTest.kt
package com.example.unittestapplication import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 import org.junit.Test import org.junit.runner.RunWith import org.junit.Assert.* /** * Instrumented test, which will execute on an Android device. * * See [testing documentation](http://d.android.com/tools/testing). */ @RunWith(AndroidJUnit4::class) class ExampleInstrumentedTest { @Test fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext assertEquals("com.example.unittestapplication", appContext.packageName) } }
テスト実行
プロジェクト直下で実行
# ローカル単体テスト(tests側) $ ./gradlew test 34 actionable tasks: 20 executed, 14 up-to-date # インストゥルメント化単体テスト(androidTests側) $ ./gradlew connectedAndroidTest 50 actionable tasks: 30 executed, 20 up-to-date
公式参考:https://developer.android.com/studio/test/command-line?hl=ja#AMOptionsSyntax
tests側
結果出力先 app/build/reports/tests/testDebugUnitTest/index.html
問題ないとき
以下のように出力されてた
addition_isCorrect 0.001s passed
間違えたとき
以下のようにコードを変更
assertEquals(5, 2 + 2)
実行後レポートには、以下のように出力されてた。
java.lang.AssertionError: expected:<5> but was:<4>
stopped Daemonsエラーが出る場合
$ ./gradlew test Starting a Gradle Daemon, 1 busy and 1 stopped Daemons could not be reused, use --status for details > Starting Daemon FAILURE: Build failed with an exception. * What went wrong: Gradle could not start your build. > Could not create service of type FileAccessTimeJournal using GradleUserHomeScopeServices.createFileAccessTimeJournal(). > Timeout waiting to lock journal cache (~/.gradle/caches/journal-1). It is currently in use by another Gradle instance. Owner PID: 84782 Our PID: 86617 Owner Operation: Our operation: Lock file: ~/.gradle/caches/journal-1/journal-1.lock
killすれば良い。
kill -9 84782