ユーザ用ツール

サイト用ツール


android:junit

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
android:junit [2019/12/03 01:07]
ips 作成
android:junit [2019/12/04 01:26] (現在)
ips [Hamkrest - Hamcrest for Kotlin]
ライン 2: ライン 2:
  
 ===== Hamkrest - Hamcrest for Kotlin ===== ===== Hamkrest - Hamcrest for Kotlin =====
 +
 +Hamkrestはおそらく一番メジャーなMatcher。
  
 [[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)>​
ライン 16: ライン 22:
 </​code>​ </​code>​
  
-<​code>​+<​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
ライン 28: ライン 34:
  
         val actual=GameMaker(1).makePlus()         val actual=GameMaker(1).makePlus()
-        assertThat("​Hello",​ equalTo("​Hello"​)) +        assertThat("​Hello",​ equalTo("​Hello"​)) ​//​文字列一致 
-        assertThat( Integer.parseInt(actual.ans),​allOf(greaterThanOrEqualTo(1),​ lessThanOrEqualTo(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 )
         }         }
  
 } }
 </​code>​ </​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.1575302876.txt.gz · 最終更新: 2019/12/03 01:07 by ips