#はじめに
Javaのテストと言えば、JUnit。それをAndroid Studioで行う方法を紹介します。
#手順
以下のようなSampleActivity.javaがあるとします。
package com.websarva.wings.android.junitsample1;
public class SampleActivity {
private int id;
private String name;
public SampleActivity(int id,String name){
this.id = id;
this.name = name;
}
//IDと名前を紹介
public String explain(){
String explain;
explain = "id:"+id+",name:"+name;
return explain;
}
//IDを取得
public int getId() {
return id;
}
//名前を取得
public String getName() {
return name;
}
}
これをテストしてみましょう!
手順①テストしたいメソッドの上でCtrl+Shift+T キー(⇧⌘T)を押す
テストしたいメソッドの上でCtrl+Shift+T キー(⇧⌘T)を押すと、**「Create New Test」**が表示されます。これをクリックします。
手順②チェックを入れる
手順①を終えると、このような画面が表示されます。
Testing libraryはJUnit4にしましょう。
そして、GenerateのsetUpにチェックを入れます。
下のMemberはメソッドの一覧です。今回は全てのメソッドをテストしたいので、全てにチェックを入れOKを押します。
すると以下のようにディレクトリを指定する画面が出てきます。デフォルトのままでOKを押します。
手順③テストメソッドを埋める
手順②を終えると、SampleActivityTest.javaが出来ます。
これを埋めると以下のようになります。
package com.websarva.wings.android.junitsample1;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class SampleActivityTest {
SampleActivity sa;
@Before
public void setUp() throws Exception {
sa = new SampleActivity(13,"Tanaka");
}
@Test
public void explain() {
assertEquals("id:13,name:Tanaka",sa.explain());
}
@Test
public void getId() {
assertEquals(13,sa.getId());
}
@Test
public void getName() {
assertEquals("Tanaka",sa.getName());
}
}
説明していきます。
まずはsetUp()です。これはテストに必要なインスタンスを作るメソッドです。
@Before
public void setUp() throws Exception {
sa = new SampleActivity(13,"Tanaka");
}
次に各メソッドに対応するテストコードです。**assertEquals(期待値,実行値)は「期待値と実行値が等しい」**ことを表明します。
@Test
public void getId() {
//インスタンスでidのところに13を入れたから、getId()は13と等しいはず。
assertEquals(13,sa.getId());
}
ほかにも与えられた条件がtrueであることを表明する**assertTrue(条件式)**などもあるので調べてみてください。
手順④テストを実行
androidTestのところにあるSampleActivityTest.javaを右クリックしてRunします。
すると下にテスト結果が表示されます。
全てクリアしてますね。
例えば、SampleActivity.javaの**explain()**を以下のようにします。
public String explain(){
String explain;
explain = "id="+id+",name="+name;//「:」を「=」にした。
return explain;
}
これでテストを実行すると以下のようにexplainの横に×が付きます。
#余談
公式ドキュメントを見るとbuild.gradleに色々追加しないといけないらしいですが、プロジェクトを作成した時点で、
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.0'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
すでにJUnitが追加されているので気にする必要は無いですね!