CodeGym/Kursus Java/Modul 3/Ujian lanjutan dengan Mockito

Ujian lanjutan dengan Mockito

Tahap, pelajaran
Tersedia

1.1 Perpustakaan Mockito

Hari ini kita akan berkenalan dengan ujian lanjutan. Lebih khusus lagi, dengan perpustakaan Mockito . Jangan terfikir untuk keluar dari perniagaan ini.

Pertama, perpustakaan ini adalah standard dalam ujian Spring . Yang sebenarnya adalah standard dalam industri pembangunan backend Java.

Kedua, anda perlu menulis ujian untuk kod Spring anda . Satu-satunya cara untuk memahami bahawa bahagian belakang yang anda tulis berfungsi sebagaimana mestinya ialah dengan memanggil kaedah APInya . Dan melakukannya dengan ujian adalah 10 kali lebih mudah daripada tanpa ujian. Anda akan lihat sendiri.

Anda boleh menambah perpustakaan Mockito kepada anda pom.xmlmenggunakan kod:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-junit-jupiter</artifactId>
    <version>4.2.0</version>
    <scope>test</scope>
</dependency>

Keseluruhan kod sumber untuk projek Mockito boleh didapati di GitHub .

1.2 Mengejek objek

Jadi apakah Mockito ini dan mengapa ia begitu baik?

Dalam proses pembangunan dan pembangunan ujian, selalunya terdapat keperluan untuk memasukkan beberapa jenis "stub" ke dalam kod dan bukannya objek sebenar.

Sebagai contoh, kod yang berfungsi dengan pangkalan data diuji dan mengubah sesuatu di sana. Adalah baik bahawa sebelum setiap ujian keadaan pangkalan data ini adalah sama (jika tidak ujian akan berbeza). Dan saya ingin asasnya menjadi lebih mudah untuk memulihkan keadaan ini dengan cepat.

Atau, sebagai contoh, anda sedang menguji kod yang menghantar SMS berguna. Dan untuk penghantaran terus, dia menggunakan beberapa jenis Gerbang SMS berbayar. Adalah baik untuk memasukkan beberapa Gateway maya ke dalamnya untuk menguji kod, supaya tidak menghantar beratus-ratus SMS kepada orang yang tidak dapat difahami.

Atau kod anda meminta data daripada pelayan web lain yang tidak tersedia pada pelayan ujian. Atau anda menulis kod untuk pembayaran dalam talian yang perlu diuji 50 kali, dan kemudian dibenarkan untuk digunakan dalam saluran kewangan sebenar.

Saya rasa anda faham ... Objek maya, atau kerana ia juga dipanggil objek rintisan, adalah perkara yang sangat berguna.

Dan inilah kesukarannya - Java mempunyai penaipan statik. Ini bermakna bahawa untuk ReadDatabasememberikan rujukan kepada objek kepada pembolehubah dan bukannya objek jenis VirtualDatabase, anda perlu mewarisi kelas VirtualDatabasedaripada RealDatabase.

Kemudian ternyata kelas itu mempunyai RealDatabasesekumpulan kaedah dan pembolehubah peribadi yang menyimpan rujukan kepada objek sebenar yang lain, dan anda tidak boleh menulis stub biasa dengan cara ini. Secara teori ia bagus, tetapi dalam praktiknya ia adalah jalan buntu.

Dan di sini datang untuk menyelamatkan ( anda boleh membacaDynamicProxy dengan lebih terperinci ), yang muncul kembali di Java 5. Ia membolehkan anda mencipta objek maya yang pengkompil tidak mempunyai aduan tentang.

Objek maya sedemikian dipanggil mocks (daripada perkataan mock - susun atur). Perpustakaan Mockito dapat membawa kerja dengan olok-olok ini ke tahap yang tidak pernah berlaku sebelum ini. Oleh itu, nama perpustakaan itu.

1.3 @ExtendWith anotasi

Perpustakaan Mockito berfungsi hebat dengan JUnit, malah boleh dianggap sebagai lanjutan daripadanya.

Terdapat dua cara untuk mendayakan pustaka Mockito dalam ujian unit anda. Cara pertama ialah menambah anotasi khas:

@ExtendWith(MockitoExtension.class)
public class MockitoAnnotationTest {
    ...
}

Cara kedua ialah mendayakan kerjanya dengan memanggil kaedah openMocks():

public class MockitoAnnotationTest {
    @BeforeEach
    public void init() {
        MockitoAnnotations.openMocks(this);
   }
}

Selalunya, anda akan melihat pilihan pertama, tetapi kadangkala adalah berguna untuk mengetahui bahawa terdapat pilihan kedua.

Komen
  • Popular
  • Baru
  • Tua
Anda mesti log masuk untuk meninggalkan ulasan
Halaman ini tidak mempunyai sebarang ulasan lagi