android-testingアンドロイドテストの開始


備考

このセクションでは、android-testingの概要と開発者がなぜそれを使いたいのかを概説します。

また、アンドロイドテストの中の大きなテーマについても言及し、関連するトピックにリンクする必要があります。アンドロイドテストのためのドキュメントは新しいものなので、それらの関連トピックの初期バージョンを作成する必要があるかもしれません。

テストタイプ

AndroidテストはJUnitに基づいており、JVM上のローカルユニットテストとして実行することも、Androidデバイス上のインストルメント済みテストとして実行することもできます。このページでは、Androidテストを構築するための概念とツールについて紹介します

  • ローカルユニットテスト(モジュール名/ src / test / java /にあります)
  • 計測されたテスト(モジュール名/ src / androidTest / java /にあります)

ローカルユニットテストJUnit

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityInstrumentationTest {

    @Rule
    public ActivityTestRule mActivityRule = new ActivityTestRule<>(
            MainActivity.class);

    @Test
    public void sayHello(){
        onView(withText("Say hello!")).perform(click());

        onView(withId(R.id.textView)).check(matches(withText("Hello, World!")));
    }
}
 

インストゥルメントされたテスト例の依存関係{androidTestCompile 'com.android.support:support-annotations:24.0.0' androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test:rules:0.5' / /オプション - HamcrestライブラリandroidTestCompile 'org.hamcrest:hamcrest-library:1.3' //オプション - EspressoによるUIテストandroidTestCompile 'com.android.support.test.espresso:エスプレッソコア:2.2.2' //オプション - UI AutomatorによるUIテストandroidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'}

android {defaultConfig {testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}}

計装単体テストクラス

import android.os.Parcel;
import android.support.test.runner.AndroidJUnit4;
import android.util.Pair;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.List;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

@RunWith(AndroidJUnit4.class)
@SmallTest
public class LogHistoryAndroidUnitTest {

    public static final String TEST_STRING = "This is a string";
    public static final long TEST_LONG = 12345678L;
    private LogHistory mLogHistory;

    @Before
    public void createLogHistory() {
        mLogHistory = new LogHistory();
    }

    @Test
    public void logHistory_ParcelableWriteRead() {
        // Set up the Parcelable object to send and receive.
        mLogHistory.addEntry(TEST_STRING, TEST_LONG);

        // Write the data.
        Parcel parcel = Parcel.obtain();
        mLogHistory.writeToParcel(parcel, mLogHistory.describeContents());

        // After you're done with writing, you need to reset the parcel for reading.
        parcel.setDataPosition(0);

        // Read the data.
        LogHistory createdFromParcel = LogHistory.CREATOR.createFromParcel(parcel);
        List<Pair<String, Long>> createdFromParcelData = createdFromParcel.getData();

        // Verify that the received data is correct.
        assertThat(createdFromParcelData.size(), is(1));
        assertThat(createdFromParcelData.get(0).first, is(TEST_STRING));
        assertThat(createdFromParcelData.get(0).second, is(TEST_LONG));
    }
}