この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
junit4 [2015/10/12 21:46] sou |
junit4 [2015/12/04 13:16] (現在) sou |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ■注意点\\ | + | ===== 注意点 ===== |
・ビルドツール(build.gradle)のバージョンが1.0.0以上の必要がある。\\ | ・ビルドツール(build.gradle)のバージョンが1.0.0以上の必要がある。\\ | ||
・ビルドタイプが「debug」でしかテストされない。「release」でも行いたい場合は下記を追加する。\\ | ・ビルドタイプが「debug」でしかテストされない。「release」でも行いたい場合は下記を追加する。\\ | ||
ライン 8: | ライン 8: | ||
- | ■ビルドファイルの設定\\ | + | ===== ビルドファイルの設定 ===== |
・build.gradle(app)\\ | ・build.gradle(app)\\ | ||
android { | android { | ||
ライン 21: | ライン 21: | ||
// ... | // ... | ||
+ | // testing libs | ||
+ | androidTestCompile 'com.android.support:support-annotations:23.0.0'\\ | ||
// runner及びrulesはtestingライブラリより分割された (旧:testing-support-lib)\\ | // runner及びrulesはtestingライブラリより分割された (旧:testing-support-lib)\\ | ||
- | androidTestCompile 'com.android.support:support-annotations:23.0.0'\\ | ||
androidTestCompile 'com.android.support.test:runner:0.3'\\ | androidTestCompile 'com.android.support.test:runner:0.3'\\ | ||
androidTestCompile 'com.android.support.test:rules:0.3'\\ | androidTestCompile 'com.android.support.test:rules:0.3'\\ | ||
} | } | ||
- | + | ===== テストコードの作成 ===== | |
- | ■テストコードの作成\\ | + | |
パッケージ名(androidTest)ディレクトリにテストコードを作成します。\\ | パッケージ名(androidTest)ディレクトリにテストコードを作成します。\\ | ||
デフォルトでApplicationTestというクラスが生成されている場所です。\\ | デフォルトでApplicationTestというクラスが生成されている場所です。\\ | ||
ライン 35: | ライン 35: | ||
- setUp() を Override し、public に変更し @Before をつける\\ | - setUp() を Override し、public に変更し @Before をつける\\ | ||
- tearDown() を Override し、public に変更し @After をつける\\ | - tearDown() を Override し、public に変更し @After をつける\\ | ||
- | - 必要に応じて AndroidTestCase.setContext(InstrumentationRegistry.getContext()) や \\InstrumentationTestCase.injectInstrumentation(InstrumentationRegistry.getInstrumentation()) を setUp() で行う\\ | + | - 必要に応じて AndroidTestCase.setContext(InstrumentationRegistry.getContext()) や\\InstrumentationTestCase.injectInstrumentation(InstrumentationRegistry.getInstrumentation()) を setUp() で行う\\ |
- | - メソッド名の命名規則として先頭にtestをつける (例: testHoge())\\ | + | |
- | ・ちょっと裏ワザ\\ | ||
- | テストしたいクラス名を選択した状態でAlt + Enterで一括でテスト関数を生成出来る。\\ | ||
---------------------------------\\ | ---------------------------------\\ | ||
ライン 51: | ライン 49: | ||
setContext(InstrumentationRegistry.getContext()); | setContext(InstrumentationRegistry.getContext()); | ||
} | } | ||
- | | + | |
+ | @Test | ||
+ | public void something() throws Exception { | ||
+ | ... | ||
+ | } | ||
+ | | ||
@After | @After | ||
public void tearDown() throws Exception { | public void tearDown() throws Exception { | ||
ライン 58: | ライン 61: | ||
} | } | ||
- | ■メソッドについて\\ | + | ===== メソッドについて ===== |
// 予測, 実際\\ | // 予測, 実際\\ | ||
assertEquals(expected, actual);\\ | assertEquals(expected, actual);\\ | ||
ライン 68: | ライン 71: | ||
\\ | \\ | ||
\\ | \\ | ||
- | ■IDEで実行 | + | |
+ | ===== 実行 ===== | ||
run > setting (実行 > デバッグ設定)\\ | run > setting (実行 > デバッグ設定)\\ | ||
+を押下\\ | +を押下\\ | ||
ライン 79: | ライン 83: | ||
\\ | \\ | ||
\\ | \\ | ||
- | ■参考URL\\ | + | |
+ | ===== メモ ===== | ||
+ | APIから値を取得し、その結果によって何らかの振る舞いを行う場合の流れの例\\ | ||
+ | \\ | ||
+ | 1~5の流れをひとまとめにしてテストするのは難しそう。\\ | ||
+ | 別々に考えれば可能だが、どれをテスト対象とするのか決めておく必要がある。\\ | ||
+ | \\ | ||
+ | 1.リクエスト関数\\ | ||
+ | in:APIの引数など\\ | ||
+ | out:なし\\ | ||
+ | \\ | ||
+ | 2.実際に接続処理を行うHttpClientやURLConnection. (ライブラリの場合もある)\\ | ||
+ | in:request\\ | ||
+ | out:response\\ | ||
+ | \\ | ||
+ | 3.コールバック待ちの無名クラス, メンバ変数など\\ | ||
+ | in:APIからの戻り\\ | ||
+ | out:APIからの戻り\\ | ||
+ | \\ | ||
+ | 4.JSONをパースする関数\\ | ||
+ | in:APIからの戻り\\ | ||
+ | out:なんらかのオブジェクト\\ | ||
+ | \\ | ||
+ | 5.得た結果を処理するビジネスロジック関数\\ | ||
+ | in:なんらかのオブジェクト\\ | ||
+ | out:実装による\\ | ||
+ | |||
+ | ここをテストする場合は、inをモックに置き換える\\ | ||
+ | |||
+ | @Test | ||
+ | public void something() throws Exception { | ||
+ | /** | ||
+ | * モックの生成 | ||
+ | */ | ||
+ | SomeClass mockedSome = mock(SomeClass.class); | ||
+ | |||
+ | /** | ||
+ | * テストしたいビジネスロジックを記述する(対象のコードと同じコード) | ||
+ | * 但しそこで取り扱うオブジェクトは、上記のモックに置き換わる | ||
+ | * | ||
+ | * ※対象のコードを変更した場合は、テストコードも同じ用に修正する必要がある。 | ||
+ | * outがある関数を呼び出す場合は、outを検証するだけで良い | ||
+ | */ | ||
+ | } | ||
+ | |||
+ | |||
+ | ===== 参考URL ===== | ||
Android JUnit 4 形式のテストにする\\ | Android JUnit 4 形式のテストにする\\ | ||
http://y-anz-m.blogspot.jp/2015/08/androidjunit-4.html\\ | http://y-anz-m.blogspot.jp/2015/08/androidjunit-4.html\\ | ||
ライン 86: | ライン 136: | ||
Building Instrumented Unit Tests\\ | Building Instrumented Unit Tests\\ | ||
https://developer.android.com/intl/ja/training/testing/unit-testing/instrumented-unit-tests.html\\ | https://developer.android.com/intl/ja/training/testing/unit-testing/instrumented-unit-tests.html\\ | ||
+ | テスト - Mixi AndroidTraining\\ | ||
http://mixi-inc.github.io/AndroidTraining/fundamentals/2.11.testing.html\\ | http://mixi-inc.github.io/AndroidTraining/fundamentals/2.11.testing.html\\ | ||