新品価格 |
AndroidでKotlinのコードにテストを書こうと思った
そして、mockを使おうと思い
今回PowerMockitoを使ってみた
・classのコード
1 2 3 4 5 6 7 8 9 |
package masterka.powermockito class AAA { companion object { fun getA(): String { return "AAA" } } } |
・テストのコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package masterka.powermockito import junit.framework.Assert import org.junit.Before 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) @PrepareForTest(AAA::class) class AAATest { @Before fun setup() { PowerMockito.mockStatic(AAA::class.java) } @Test fun testAAA() { Assert.assertEquals("AAA", AAA.getA()) } } |
・エラー
上記のコードで動くはずだがエラーが出た
java.lang.NoSuchMethodError: org.mockito.internal.handler.MockHandlerFactory.createMockHandler(Lorg/mockito/mock/MockCreationSettings;)Lorg/mockito/internal/InternalMockHandler;
・エラーを吐くgradle
動かないgradleは以下でした
1 2 3 4 |
testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:2.18.3' testImplementation 'org.powermock:powermock-api-mockito2:1.7.4' testImplementation 'org.powermock:powermock-module-junit4:1.7.4' |
・PowerMockitoが動くgradle
バージョンを固定する必要がある模様
https://github.com/powermock/powermock/wiki/Mockito#supported-versions
以下に変えたら動いた
1 2 3 4 |
testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:2.8.9' testImplementation 'org.powermock:powermock-api-mockito2:1.7.4' testImplementation 'org.powermock:powermock-module-junit4:1.7.4' |
mockitoとpowermockitoのバージョンが書かれてたけど
まさかバージョン下げないと動かないと思わなかった・・・
また、gradleで何をインストールしたら良いかわからなくて困りました
こちらで動いたので参考にどうぞ