内容へ移動
猫型iPS細胞研究所
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
INDEX
»
android
»
junit
トレース:
android:junit
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== junit ====== ===== Hamkrest - Hamcrest for Kotlin ===== Hamkrestはおそらく一番メジャーなMatcher。 [[https://github.com/npryce/hamkrest/blob/master/README.md|Hamkrest - Hamcrest for Kotlin]] com.natpryce.hamkrest → kotlin用のhamkrest org.hamcrest. → 普通のhamkrest [[https://qiita.com/opengl-8080/items/e57dab6e1fa5940850a3|HamcrestのMatchersに定義されているメソッドの使い方メモ]] [[https://github.com/npryce/hamkrest/blob/master/docs/function-references.md|Shortcuts: using function references as Matchers]] <code kotlin build.gradle(module)> dependencies { ・・・ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.13.0" implementation 'com.natpryce:hamkrest:1.7.0.0' // ADD </code> <code kotlin> import com.natpryce.hamkrest.* // kotlin用のhamkrest import com.natpryce.hamkrest.assertion.assertThat import org.junit.Test class xxxTest { @Test fun xxx() { val actual=GameMaker(1).makePlus() assertThat("Hello", equalTo("Hello")) //文字列一致 assertThat( Integer.parseInt(actual.ans),allOf(greaterThanOrEqualTo(1), lessThanOrEqualTo(9))) //1~9まで // listsは1..9まですべてを含む val contain = Matcher(List<out Int>::containsAll,listOf(1,2,3,4,5,6,7,8,9)) assertThat(lists,contain ) } } </code> ===== testでLogをmockする ===== [[https://qiita.com/oxsoft/items/b12b7a6c17e92eb880cd|Method d in android.util.Log not mocked.に対する3つの対処法]] <code> java.lang.RuntimeException: Method d in android.util.Log not mocked. See http://g.co/androidstudio/not-mocked for details. </code> ==== 対策1.testOptionsを追加する ==== http://g.co/androidstudio/not-mocked Unit Testsで全てのAndroidクラスが何もしないようになる。 <code kotlin build.gradle(Modlue:app)> android { compileSdkVersion 29 ・・・ // ↓追加 testOptions { unitTests.returnDefaultValues = true } // ↑追加 } </code> ==== 対策2.PowerMockを使う==== PowerMockは、static関数のMockを作ることができるライブラリ。 インポートするバージョンによってはうまく動作しないようでハマった。 [[https://blog.masterka.net/archives/271|Android+Kotlin+PowerMockitoをやってみた]] <code kotlin build.gradle(Modlue:app)> </code> <code kotlin> import android.util.Log import com.natpryce.hamkrest.allOf import com.natpryce.hamkrest.assertion.assertThat import com.natpryce.hamkrest.equalTo import com.natpryce.hamkrest.greaterThanOrEqualTo import com.natpryce.hamkrest.lessThanOrEqualTo import org.junit.Test import org.junit.runner.RunWith import org.powermock.api.mockito.PowerMockito import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner @RunWith(PowerMockRunner::class) //ADD @PrepareForTest(Log::class) //ADD class GameMakerTest { @Test fun makePlus() { PowerMockito.mockStatic(Log::class.java) //ADD ・・・テスト対処でもテストでもLogがあればmockしてくれる。 } } </code>
android/junit.txt
· 最終更新: 2019/12/04 01:26 by
ips
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ