以前のリビジョンの文書です
Hamkrestはおそらく一番メジャーなMatcher。
Hamkrest - Hamcrest for Kotlin
HamcrestのMatchersに定義されているメソッドの使い方メモ
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
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まで } }
Method d in android.util.Log not mocked.に対する3つの対処法
java.lang.RuntimeException: Method d in android.util.Log not mocked. See http://g.co/androidstudio/not-mocked for details.
http://g.co/androidstudio/not-mocked
Unit Testsで全てのAndroidクラスが何もしないようになる。
android { compileSdkVersion 29 ・・・ // ↓追加 testOptions { unitTests.returnDefaultValues = true } // ↑追加 }
PowerMockは、static関数のMockを作ることができるライブラリ。
インポートするバージョンによってはうまく動作しないようでハマった。
Android+Kotlin+PowerMockitoをやってみた
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してくれる。 } }