この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
android:junit [2019/12/03 01:21] ips |
android:junit [2019/12/04 01:26] (現在) ips [Hamkrest - Hamcrest for Kotlin] |
||
|---|---|---|---|
| ライン 6: | ライン 6: | ||
| [[https://github.com/npryce/hamkrest/blob/master/README.md|Hamkrest - Hamcrest for Kotlin]] | [[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://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)> | <code kotlin build.gradle(module)> | ||
| ライン 20: | ライン 24: | ||
| <code kotlin> | <code kotlin> | ||
| - | import com.natpryce.hamkrest.* | + | import com.natpryce.hamkrest.* // kotlin用のhamkrest |
| import com.natpryce.hamkrest.assertion.assertThat | import com.natpryce.hamkrest.assertion.assertThat | ||
| import org.junit.Test | import org.junit.Test | ||
| ライン 32: | ライン 36: | ||
| assertThat("Hello", equalTo("Hello")) //文字列一致 | assertThat("Hello", equalTo("Hello")) //文字列一致 | ||
| assertThat( Integer.parseInt(actual.ans),allOf(greaterThanOrEqualTo(1), lessThanOrEqualTo(9))) //1~9まで | 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 ) | ||
| } | } | ||
| ライン 39: | ライン 46: | ||
| - | ==== testでLogをmockする ==== | + | ===== testでLogをmockする ===== |
| [[https://qiita.com/oxsoft/items/b12b7a6c17e92eb880cd|Method d in android.util.Log not mocked.に対する3つの対処法]] | [[https://qiita.com/oxsoft/items/b12b7a6c17e92eb880cd|Method d in android.util.Log not mocked.に対する3つの対処法]] | ||
| ライン 47: | ライン 54: | ||
| </code> | </code> | ||
| - | === 対策1 === | + | ==== 対策1.testOptionsを追加する ==== |
| http://g.co/androidstudio/not-mocked | http://g.co/androidstudio/not-mocked | ||
| ライン 62: | ライン 69: | ||
| } | } | ||
| </code> | </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> | ||
| + | |||