Apa tujuan anotasi @SmallTest, @MediumTest, dan @LargeTest di Android?

99

Saya baru mengenal Android dan saya telah melihat kode contoh menggunakan anotasi ini. Sebagai contoh:

@SmallTest
public void testStuff() {
    TouchUtils.tapView(this, anEditTextView);
    sendKeys("H E L P SPACE M E PERIOD");
    assertEquals("help me.", anEditTextView.getText().toString());
}

Apa yang dicapai anotasi itu?

Eric Palakovich Carr
sumber

Jawaban:

9

Sebagai tambahan untuk jawaban Davidann dan terutama pertanyaan OP di komentar:

Dalam konteks kode di atas, apakah itu benar-benar MELAKUKAN sesuatu kecuali meninggalkan catatan untuk pengembang lain? Apakah itu memaksakan sesuatu? Apakah ada alat yang menggunakan anotasi ini? Apa tujuannya dalam pengembangan Android?

Anda dapat menjalankan sekelompok pengujian yang dianotasi dengan anotasi tertentu.

Dari dokumentasi AndroidJUnitRunner :

Menjalankan ukuran pengujian tertentu, yaitu yang dianotasi dengan SmallTest atau MediumTest atau LargeTest :

adb shell am instrument -w -e size [kecil | sedang | besar] com.android.foo/android.support.test.runner.AndroidJUnitRunner

Anda juga dapat mengatur parameter tersebut melalui gradle:


    android {
        ...
        defaultConfig {
            ...
            testInstrumentationRunnerArgument 'size', 'Large'
        }
    }

Melalui gradle:

-Pandroid.testInstrumentationRunnerArguments.size=small

Lihat entri blog Doug Stevenson serta entri blog ini untuk detail selengkapnya.

azizbekian
sumber
OK, jadi singkatnya saya hanya dapat menjalankan rangkaian pengujian @SmallTest dengan adb shell am instrument -w -e size small com.android.foo/android.support.test.runner.AndroidJUnitRunner; terima kasih
kosiara - Bartosz Kosarzycki
Bagaimana kita menentukan anotasi dalam perintah gradle? Misalnya, sesuatu seperti:./gradlew connectedDebugAndroidTest -size MediumTest
Mr-IDE
@ Mr-IDE, apakah anda mendapatkan jawabannya?
Yohanes
138

Posting blog ini menjelaskannya dengan baik. Pada dasarnya adalah sebagai berikut:

bagan pengujian

  1. Kecil: tes ini tidak berinteraksi dengan sistem file atau jaringan apa pun.
  2. Medium: Mengakses sistem file di kotak yang menjalankan pengujian.
  3. Besar: Mengakses sistem file eksternal, jaringan, dll.

Berdasarkan blog Pengembang Android , pengujian kecil harus berlangsung <100 md, pengujian sedang <2 detik, dan pengujian besar <120 detik.

Lihat halaman ini (cari "@SmallTest") tentang cara menentukan pengujian mana yang akan dijalankan.

David Weiser
sumber
13
Saya melihat (dan ingat membaca artikel itu bulan lalu). Tetapi dalam konteks kode di atas, apakah itu benar-benar MELAKUKAN sesuatu kecuali meninggalkan catatan untuk pengembang lain? Apakah itu memaksakan sesuatu? Apakah ada alat yang menggunakan anotasi ini? Apa tujuannya dalam pengembangan Android?
Eric Palakovich Carr
3
@Eric Android TestRunner memungkinkan Anda menentukan ukuran pengujian yang akan dijalankan.
Cheryl Simon
7
Ada blog baru dari Google tentang masalah ini: plus.google.com/+AndroidDevelopers/posts/TPy1EeSaSg8
k29
1
@SmallTest tidak digunakan lagi
Neon Warge
1
@NeonWarge menggunakan import android.support.test.filters. [Kecil] Test;
Alexander Sidikov Pfeif
1

Anda juga dapat membuat anotasi pengujian unit POJO dengan @Category(MediumTest.class)atau @Category(LargeTest.class), dll. Dengan menentukan Kategori Anda sendiri - lihat repo kategori pengujian sebagai contoh

Rhisiart
sumber