AndroidのJUnitについては、ADTがEclipseだった時代にすこーしだけかじったことがあったぐらいで、ほかの担当者に任せていましたが、今回あらためて私がやることになったので、勉強がてら書いていきます。
どうやら、JUnitが4になって、だいぶ様子が変わったようです。
利用する開発環境は、Android Studio 2.1.1です。
以前は、junit.framework.TestCase classをExtendしないといけなかったり、メソッド名にtest とつけなくてはいけなかったのですが、そういうのもなくなったり、ほかにもかなり機能が拡張されているようです。
https://developer.android.com/training/testing/unit-testing/local-unit-tests.html?hl=ja
まずは、アプリケーションのレベルにあるbuild.gradleに次のように付け加えます。
dependencies { //JUnitのために付け足し // Required -- JUnit 4 framework testCompile 'junit:junit:4.12' // Optional -- Mockito framework testCompile 'org.mockito:mockito-core:1.10.19' }
defaultConfig { //JUnitのために付け足し testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" }
早速ではありますが、これは初心者用!ということで、まずは超簡単!なテストスクリプトです。
たとえば、パスワードなどの入力のために、文字数を数えて、指定の文字数以上ならtrueを返す、というメソッドがあります。
public class Validate { //中略 /** * 特定の文字列が、定められた桁数以上かどうか */ public static boolean isEnoughCharacters(String str, int number){ if (str.length() < number) { return false; } return true; }
これのテストコードをつくります。
app/src/test/java/ValidateTest.java
というファイルを作ります。
import android.test.suitebuilder.annotation.SmallTest; import org.junit.Test; import java.util.HashMap; import java.util.regex.Pattern; import jp.onlineconsultant.densaburoporoto.utils.Validate; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** * 登録のバリデーションのテストユニット */ @SmallTest public class ValidateTest { @Test public void isEnoughCharacter_ReturnsTrue() { String str = "hogehoge"; int number = 6; assertTrue(Validate.isEnoughCharacters(str, number)); } }
んで、作ったら、ValidateTest.javaを右クリックして、
「Run ValidateTest」
というのを選択します。
実行されて、Greenが表示されたでしょうか?!
ちなみに、Googleさんが提供する Google Cloud Test Labというのがあって、どうやら?たくさんの実機でテストできたみたいですが
https://developers.google.com/cloud-test-lab/?hl=ja
今は、Firebase というサービスに移ったみたいですね。
まだ、ちょい見しかしていないので、よくわかりませんが、今後見てみます。