AndroidStudioでUnitTestを行う
こんにちは。初めましての方は初めまして、そうでない方は初めません。エニセンスのAndroidエンジニアの水野です。
今回と次回の2回に渡ってテストの自動化についてお話致します。
Androidアプリのエンジニアの皆様は、普段テストをどのように行っているのでしょうか?
おそらく殆どの方は実機やエミュレータで手動でテストを行っていると思います。
今回はそんな面倒なテストを先日行われたGoogleI/OのCodeLabの記事に添って自動化にチャレンジしてみたいと思います。
始める前に
今回紹介するテストを行う際に必要なものは、
・AndroidStudio 1.2以上
です。
ダウンロード:Download Android Studio and SDK Tools
導入
まず初めに、Gladleでモジュールを導入しましょう。
1 2 3 4 5 |
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.1.1' testCompile 'junit:junit:4.12' } |
JUnit4がテストのモジュールです。
次に生成されたテストを格納するディレクトリを作成します。
src以下のtest内にjavaディレクトリを作成しましょう。
Unitテスト
準備が整ったところで、実際にUnitテストを始めていきましょう。
Build VariantsのTest Artifactで、Unit Testsを選択します。
まずは、簡単なテスト用クラスを作成してみます。
今回は加算と減算を行うだけのクラスを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 |
package com.example.testing.testingexample; public class Calculator { public int sum(int a, int b) { return a + b; } public int substract(int a,int b){ return 0; } } |
次にクラスの宣言部分を右クリックし、
Go To > Test
を選択して新しいテストを作成しましょう。
ダイアログが開いたら、Testing libralyでJunit4を選択します。
GenerateのsetUp/@Beforeにチェックを入れて、テストを生成したいメソッドにもチェックを入れます。
OKを選択すると、テストが作成されます。
先ほど作成したディレクトリ内にテストが作成されています。
作成されたクラスにテストを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package com.example.testing.testingexample; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class CalculatorTest { private Calculator mCalculator; @Before public void setUp() throws Exception { mCalculator = new Calculator(); } @Test public void testSum() throws Exception { //予想:1 + 5 で 6が返ってくるはず assertEquals(6, mCalculator.sum(1, 5), 0); } @Test public void testSubstract() throws Exception { assertEquals(2, mCalculator.substract(5, 3), 0); } } |
ここまできてようやくテストの準備が完了です。
実際に動かしてみましょう。
Run > CalculatorTestでテストを開始します。
substractメソッドが予想していた数値でないものがを返ってきたため、AssertionErrorが発生しました。
Calculatorクラスの記述を変更してみます。
1 2 3 4 5 6 7 8 9 10 11 12 |
package com.example.testing.testingexample; public class Calculator { public int sum(int a, int b) { return a + b; }は public int substract(int a, int b) { return a - b; } } |
それではもう一度実行してみます。結果はどうでしょうか?
正常に終了しました。
—
一度テストを作ってしまえば、アップデートの度に実機でのテスト時間を減らすことが出来、またPC上で動作しますので高速にテストを行うことが出来ます。
是非この機会にUnitテストを導入してみては如何でしょうか?
今回はここまで。次回は実機を用いたUIテストをご紹介します!