Rumah  >  Artikel  >  hujung hadapan web  >  JUnit Mocking: Panduan Lengkap

JUnit Mocking: Panduan Lengkap

DDD
DDDasal
2024-09-12 20:15:021055semak imbas

JUnit Mocking: A Complete Guide
Pengenalan kepada JUnit Mocking
Dalam ujian unit moden, mengejek ialah alat berkuasa yang membantu mensimulasikan gelagat kebergantungan, dan JUnit digabungkan dengan rangka kerja mengejek menjadikan proses ini sangat berkesan. Dengan menggunakan olok-olok, pembangun boleh mengasingkan kod mereka daripada kebergantungan luaran dan menumpukan pada menguji fungsi tertentu dalam pangkalan kod mereka. Dalam siaran ini, kami akan meneroka perkara penting mengejek junit dan cara menerapkannya dengan berkesan menggunakan rangka kerja Mockito yang popular.
Apakah Mengejek dalam Ujian Unit?
Mengejek merujuk kepada proses mencipta versi simulasi objek atau kaedah dalam ujian unit, membenarkan pembangun mengasingkan kod yang sedang diuji. Teknik ini amat berguna apabila menguji kelas yang bergantung pada perkhidmatan luaran, pangkalan data atau API. Dengan menggantikan kebergantungan ini dengan objek olok-olok, anda boleh mensimulasikan gelagatnya, memfokuskan ujian anda semata-mata pada logik di dalam kelas atau kaedah yang sedang diteliti.
Sebagai contoh, pertimbangkan kelas perkhidmatan yang bergantung pada sambungan pangkalan data. Semasa ujian unit, anda tidak memerlukan sambungan pangkalan data sebenar; sebaliknya, anda membuat versi olok-olok yang mengembalikan hasil yang dipratentukan.
Mengapa Mengejek Penting dalam JUnit
Mengejek memainkan peranan penting dalam ujian JUnit dengan mendayakan pengasingan komponen sistem, memastikan ujian unit memberi tumpuan semata-mata pada logik kaedah yang diuji. Tanpa mengejek, ujian anda boleh bergantung pada keadaan sistem luaran, seperti pangkalan data atau API pihak ketiga, menjadikannya rapuh dan lebih sukar untuk diselenggara.
Dengan menggunakan olok-olok, anda mengelakkan keperluan untuk interaksi sebenar dengan kebergantungan, yang menghasilkan ujian yang lebih pantas dan lebih dipercayai. Ia juga memberikan lebih kawalan ke atas gelagat kebergantungan, membolehkan anda mensimulasikan keadaan ralat, kes tepi atau output tertentu dengan mudah.
Rangka Kerja Mengejek Popular untuk JUnit
Beberapa rangka kerja mengejek disepadukan dengan baik dengan JUnit, dengan Mockito dan EasyMock menjadi dua alat yang paling biasa digunakan. Mockito adalah yang paling popular kerana kemudahan penggunaannya, sintaks yang ringkas dan set ciri yang kaya.
• Mockito: Rangka kerja ini membolehkan anda membuat objek olok-olok dengan mudah dan menyediakan cara yang berkuasa untuk mengkonfigurasi gelagat olok-olok tersebut.
• EasyMock: Alternatif lain, EasyMock, menyediakan kefungsian yang serupa tetapi mempunyai pendekatan berbeza untuk mencipta objek tiruan dan mengesahkan interaksi.
Walaupun kedua-dua rangka kerja berkesan, Mockito lebih disukai dalam banyak projek kerana APInya yang mudah dan sokongan komuniti yang aktif.
Menyediakan Mockito dengan JUnit
Mockito, rangka kerja mengejek yang berkuasa, boleh disepadukan dengan lancar ke dalam ujian JUnit dengan persediaan yang minimum. Untuk menggunakan Mockito dalam projek anda, anda perlu menambah kebergantungan Mockito pada fail binaan anda. Sebagai contoh, dalam projek Maven, anda akan memasukkan perkara berikut dalam pom.xml anda:
xml
Salin kod

org.mockito
mockito-core
4.0.0
ujian

Setelah kebergantungan ditambahkan, anda boleh mula menggunakan anotasi dan kaedah Mockito untuk mencipta objek olok-olok, mentakrifkan gelagatnya dan mengesahkan interaksi.
Menulis Kes Ujian Olok-olok Mudah
Untuk menunjukkan kuasa Mockito, mari kita mulakan dengan contoh asas mengejek pergantungan perkhidmatan dalam ujian JUnit. Pertimbangkan senario di mana kami sedang menguji kelas UserService yang bergantung pada UserRepository untuk mengambil data.
Begini cara kami boleh mengejek repositori dalam ujian kami:
java
Salin kod
@RunWith(MockitoJUnitRunner.class)
Ujian Perkhidmatan Pengguna kelas awam {

@Mock
private UserRepository userRepository;

@InjectMocks
private UserService userService;

@Test
public void testGetUserById() {
    // Arrange
    User mockUser = new User(1, "John Doe");
    Mockito.when(userRepository.findById(1)).thenReturn(Optional.of(mockUser));

    // Act
    User result = userService.getUserById(1);

    // Assert
    assertEquals("John Doe", result.getName());
}

}
Dalam ujian ini, kami mencipta olok-olok UserRepository dan mentakrifkan kelakuannya menggunakan Mockito.when() untuk mengembalikan pengguna tertentu apabila dipanggil. Ini membolehkan kami menguji kelas UserService secara berasingan tanpa bergantung pada pangkalan data sebenar.
Memahami Anotasi @Mock dan @InjectMocks
Mockito menyediakan anotasi seperti @Mock dan @InjectMocks, yang membantu memudahkan penciptaan objek tiruan dan suntikannya ke dalam kelas yang sedang diuji.
• @Mock: Anotasi ini digunakan untuk mencipta contoh olok-olok bagi kelas yang ditentukan. Dalam contoh di atas, UserRepository diejek menggunakan anotasi ini.
• @InjectMocks: Anotasi ini memberitahu Mockito untuk menyuntik olok-olok (seperti UserRepository) ke dalam kelas yang diuji (UserService), dengan berkesan mendawai kebergantungan olok-olok secara automatik.
Anotasi ini mengurangkan kod boilerplate dan menjadikan ujian anda lebih mudah dibaca dan diselenggara.
Mengesahkan Interaksi Olok-olok
Selain objek mengejek, Mockito membenarkan kami mengesahkan interaksi dengan olok-olok ini, memastikan kaedah tertentu dipanggil dengan hujah yang dijangkakan. Ini berguna dalam senario di mana kod anda bukan sahaja bergantung pada hasil panggilan kaedah tetapi juga kesan sampingan atau interaksi.
Begini cara anda boleh mengesahkan panggilan kaedah dalam Mockito:
java
Salin kod
@ujian
public void testSaveUser() {
Pengguna pengguna = Pengguna baharu(1, "John Doe");

// Act
userService.saveUser(user);

// Assert
Mockito.verify(userRepository).save(user);

}
Dalam contoh ini, Mockito.verify() menyemak bahawa kaedah save() telah dipanggil pada objek UserRepository olok-olok dengan hujah yang dijangkakan.
Amalan Terbaik untuk Mengejek dalam JUnit
Apabila menggunakan olok-olok dalam ujian JUnit, adalah penting untuk mengikuti amalan terbaik tertentu untuk mengekalkan kebolehpercayaan dan kebolehbacaan ujian:

  1. Pastikan Olok-olok Fokus: Olok-olok hanya apa yang perlu untuk ujian. Elakkan mengejek secara berlebihan, kerana ini boleh menjadikan ujian lebih sukar untuk difahami.
  2. Sahkan Interaksi Secara Berhemat: Gunakan pengesahan apabila ia menambah nilai pada ujian. Pengesahan yang berlebihan boleh mengacaukan logik ujian.
  3. Elakkan Mengejek Objek Bernilai Mudah: Daripada mengejek objek mudah (seperti objek pemindahan data), cipta contoh sebenar untuk memastikan ujian itu realistik.
  4. Pastikan Ujian Diasingkan: Setiap ujian harus menumpukan pada satu tingkah laku dan olok-olok harus ditetapkan semula atau dicipta semula untuk memastikan tiada keadaan dikongsi antara ujian. Kesimpulan Ejekan JUnit ialah aspek penting dalam ujian unit, membantu pembangun menulis ujian yang lebih fokus dan terpencil sambil mengekalkan kebergantungan di bawah kawalan. Dengan memanfaatkan rangka kerja mengejek seperti Mockito, anda boleh membuat ujian teguh yang bebas daripada sistem luaran, meningkatkan kedua-dua kelajuan dan kebolehpercayaan suite ujian anda. Mengejek memastikan bahawa ujian anda benar-benar mengenai ujian unit logik dalam kelas anda, dan bukannya menangani kerumitan luaran.

Atas ialah kandungan terperinci JUnit Mocking: Panduan Lengkap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn