Angga Dwi A Sprint 2 Week 1 Blog: Android App Testing

Hal ini adalah langkah selanjutnya yang harus dikerjakan setelah membuat fungsi-fungsi dari aplikasi android yaitu membuat testing dari fungsi-fungsi tersebut!

ada bermacam test yang dapat kita lakukan dengan aplikasi android yang kita buat,

  1. Unit Test
  2. Instrumented Test
  3. User Interface Test
  4. etc

Pada postingan kali ini saya hanya akan membahas sampai instrumented saja karena keterbatasan waktu.

1. Unit Test

Unit test yang akan kita gunakan di aplikasi android kita dapat menggunakan framework unit test yang telah disediakan oleh java yaitu Junit framework ( http://junit.org/junit4/ )

Langkah-langkah yang harus kita lakukan yaitu pertama-tama kita harus menambahkan dependencies kita ke dalam file build.gradle kita. contohnya

dependencies {
    // Required -- JUnit 4 framework
    testCompile 'junit:junit:4.12'
}

Selanjutnya kita harus membuat file unit test kita sendiri untuk mengetes fungsi-fungsi atau method-method yang telah kita buat,

import org.junit.Test;
import java.util.regex.Pattern;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

public class EmailValidatorTest {

    @Test
    public void emailValidator_CorrectEmailSimple_ReturnsTrue() {
        assertThat(EmailValidator.isValidEmail("name@email.com"), is(true));
    }
}

class EmailValidator inilah yang akan menjadi bahan untuk mengetes kelas-kelas kita yang selanjutnya akan diattach kepada class email selaku entity yang kita gunakan di aplikasi kita.
selanjutnya kita tinggal melanjutkan membuat test untuk fungsi-fungsi lain yang ada pada aplikasi kita

2. Instrumented Test

Instrumented test itu apa? Instrumented test yaitu mengetest aplikasi kita langsung pada emulator ataupun device yang tersedia pada IDE yang kita gunakan(E.G. Android Studio).

Sama seperti Unit Test,

Langkah-langkah yang harus kita lakukan yaitu pertama-tama kita harus menambahkan dependencies kita ke dalam file build.gradle kita. contohnya

dependencies {
    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'
    // Optional -- Hamcrest library
    androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
    // Optional -- UI testing with Espresso
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    // Optional -- UI testing with UI Automator
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
}

diatas merupakan library-library yang dapat kita gunakan untuk melakukan instrumented test pada aplikasi kita
contohnya yaitu espresso ( https://google.github.io/android-testing-support-library/docs/espresso/ )

Selanjutnya kita harus membuat kelas instrumented test kita sendiri

berikut contohnya

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));
    }
}

Selanjutnya kita harus membuat kelas Test Suite untuk menjalankan kelas instrumented test kita diatas

berikut contohnya
import com.example.android.testing.mysample.CalculatorAddParameterizedTest;
import com.example.android.testing.mysample.CalculatorInstrumentationTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

// Runs all unit tests.
@RunWith(Suite.class)
@Suite.SuiteClasses({CalculatorInstrumentationTest.class,
        CalculatorAddParameterizedTest.class})
public class UnitTestSuite {}


=============================================================
Terakhir, untuk menjalankan kedua testing diatas dpt dilakukan dgn cara

Build project kalian -> lalu
- untuk menjalankan satu test saja, klik project kalian lalu klik kanan di salah satu test, lalu run
- untuk menjalankan semua method di satu class, klik run di 1 class
- utk menjalankan semua method di satu directory, klik run di 1 direktori yang diinginkan

Semoga tulisan ini bermanfaat bagi pembaca. Jika ada pertanyaan lebih lanjut kalian
bisa melakukan research2 di google dgn sumber yang amat banyak. atau jika ada yang ingin
berdiskusi dengan saya mengenai android dapat berdiskusi dengan saya, agar kita bersenang-senang bersama2 :)))

Sebagian dari postingan ini saya ambil dari official page google developer android( https://developer.android.com/training/testing/start/index.html )

Salam, Angga.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s