CodeGym/Java Course/Modul 3/Pengujian lanjutan dengan Mockito

Pengujian lanjutan dengan Mockito

Level 4, Pelajaran 0
Tersedia

1.1 Perpustakaan Mockito

Hari ini kita akan berkenalan dengan pengujian lanjutan. Lebih khusus lagi, dengan perpustakaan Mockito . Jangan berpikir untuk keluar dari bisnis ini.

Pertama, perpustakaan ini adalah standar dalam pengujian Musim Semi . Yang sebenarnya merupakan standar dalam industri pengembangan backend Java.

Kedua, Anda harus menulis tes untuk kode Spring Anda . Satu-satunya cara untuk memahami bahwa backend yang Anda tulis berfungsi sebagaimana mestinya adalah dengan memanggil metode API-nya . Dan melakukannya dengan tes 10 kali lebih mudah daripada tanpa tes. Anda akan melihat sendiri.

Anda dapat menambahkan perpustakaan Mockito ke perpustakaan Anda pom.xmlmenggunakan kode:

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

Seluruh kode sumber untuk proyek Mockito dapat ditemukan di GitHub .

1.2 Objek tiruan

Jadi apa Mockito ini dan mengapa begitu bagus?

Dalam proses pengembangan dan pengembangan pengujian, sangat sering ada kebutuhan untuk menyelipkan semacam "rintisan" ke dalam kode alih-alih objek nyata.

Misalnya, kode yang berfungsi dengan basis data diuji dan mengubah sesuatu di sana. Adalah baik bahwa sebelum setiap pengujian keadaan basis data ini sama (jika tidak, pengujian akan berbeda). Dan saya ingin basisnya lebih sederhana untuk memutar kembali status ini dengan cepat.

Atau, misalnya, Anda sedang menguji kode yang mengirimkan SMS berguna. Dan untuk surat langsung, dia menggunakan semacam SMS Gateway berbayar. Alangkah baiknya menyelipkan beberapa Gateway virtual ke dalamnya untuk menguji kode, agar tidak mengirim ratusan SMS ke orang yang tidak dapat dipahami.

Atau kode Anda meminta data dari server web lain yang tidak tersedia di server uji. Atau Anda menulis kode untuk pembayaran online yang perlu diuji 50 kali, dan baru kemudian diizinkan untuk digunakan di saluran keuangan nyata.

Saya pikir Anda mengerti ... Objek virtual, atau disebut juga objek rintisan, adalah hal yang sangat berguna.

Dan inilah kesulitannya - Java memiliki pengetikan statis. Ini berarti bahwa untuk ReadDatabasemenetapkan referensi ke objek ke variabel alih-alih objek bertipe VirtualDatabase, Anda harus mewarisi kelas VirtualDatabasedari RealDatabase.

Kemudian ternyata kelas tersebut memiliki RealDatabasebanyak metode dan variabel pribadi yang menyimpan referensi ke objek nyata lainnya, dan Anda tidak dapat menulis rintisan biasa dengan cara ini. Secara teori itu bagus, tetapi dalam praktiknya jalan buntu.

Dan ini datang untuk menyelamatkan ( Anda dapat membacaDynamicProxy lebih detail ), yang muncul kembali di Java 5. Ini memungkinkan Anda untuk membuat objek virtual yang tidak dikeluhkan oleh kompiler.

Objek virtual semacam itu disebut mock (dari kata mock - layout). Perpustakaan Mockito mampu membawa karya dengan tiruan ini ke ketinggian yang belum pernah terjadi sebelumnya. Oleh karena itu, omong-omong, nama perpustakaan.

1.3 @PerpanjangDengan anotasi

Pustaka Mockito bekerja sangat baik dengan JUnit, bahkan dapat dianggap sebagai perpanjangannya.

Ada dua cara untuk mengaktifkan pustaka Mockito dalam pengujian unit Anda. Cara pertama adalah menambahkan anotasi khusus:

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

Cara kedua adalah mengaktifkan kerjanya dengan memanggil metode openMocks():

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

Paling sering, Anda akan melihat opsi pertama, tetapi terkadang berguna untuk mengetahui bahwa ada opsi kedua.

Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar