Bila Menggunakan @Mock vs. @InjectMocks dalam Mockito
Mockito ialah rangka kerja yang popular untuk mengejek dan ujian unit di Java. Ia menyediakan dua anotasi untuk mengejek: @Mock dan @InjectMocks. Adalah penting untuk memahami perbezaan mereka untuk menggunakan olok-olok secara berkesan dalam ujian anda.
@Mock
@Mock digunakan untuk menjana objek tiruan. Apabila anda menganotasi medan dengan @Mock, Mockito mencipta objek kelas yang ditentukan dan mendaftarkannya sebagai olok-olok. Olok-olok ini akan mematuhi gelagat antara muka olok-olok, menyediakan pengganti untuk objek sebenar dalam ujian anda.
@InjectMocks
Sebaliknya, @InjectMocks menganotasikan contoh a kelas dalam ujian. Mockito menyuntik objek olok-olok yang dibuat dengan anotasi @Mock ke dalam kejadian ini. Teknik ini membolehkan anda menguji kelakuan kelas yang diuji semasa berinteraksi dengan kebergantungan olok-olok tertentu.
Pertimbangan Penggunaan
Untuk menggunakan @Mock dan @InjectMocks, anda' Saya perlu memulakan olok-olok dan menyuntiknya. Dalam JUnit 4, gunakan @RunWith(MockitoJUnitRunner.class) atau Mockito.initMocks(this). Untuk JUnit 5, gunakan @ExtendWith(MockitoExtension.class).
Contoh
Pertimbangkan contoh berikut yang menggambarkan penggunaan @Mock dan @InjectMocks:
// JUnit 4 @RunWith(MockitoJUnitRunner.class) public class SomeManagerTest { @InjectMocks private SomeManager someManager; @Mock private SomeDependency someDependency; // injected into someManager // tests... }
Dalam contoh ini, someManager disuntik dengan contoh olok-olok beberapa Kebergantungan. Ujian kini boleh menegaskan bagaimana someManager berinteraksi dengan olok-olok ini.
Kesimpulan
Menggunakan @Mock dan @InjectMocks dengan sewajarnya adalah penting untuk ujian unit berasaskan Mockito yang berkesan. Dengan memahami dengan jelas peranan mereka, anda boleh memastikan ketepatan dan kebolehpercayaan ujian anda.
Atas ialah kandungan terperinci @Mock vs. @InjectMocks dalam Mockito: Bila Perlu Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!