Rumah >Java >javaTutorial >Apakah Perbezaan Antara Anotasi @Mock dan @InjectMocks Mockito?
Memahami Perbezaan Antara @Mock dan @InjectMocks dalam Mockito
Mockito, rangka kerja mengejek yang popular untuk Java, menyediakan dua anotasi penting: @ Mock dan @InjectMocks. Walaupun kedua-duanya penting untuk ujian mengejek, ia mempunyai tujuan yang berbeza.
@Mock: Mencipta Olok-olok
@Mock digunakan untuk mencipta objek olok-olok. Ia mewakili pelaksanaan palsu atau simulasi bagi objek sebenar. Olok-olok membolehkan anda mengawal tingkah laku mereka dan menegaskan interaksi mereka dalam ujian anda. Contohnya:
@Mock private SomeDependency someDependency;
Kod ini mencipta olok-olok antara muka SomeDependency. Anda kemudian boleh menggunakan tiruan ini dalam ujian anda.
@InjectMocks: Menyuntik Olok-olok
Sebaliknya, @InjectMocks memainkan peranan yang berbeza. Ia digunakan untuk mencipta contoh kelas dan menyuntik olok-olok yang dibuat dengan anotasi @Mock (atau @Spy) ke dalam contoh itu. Ini membolehkan anda menguji interaksi antara berbilang kelas dan kebergantungan mereka tanpa membuat kejadian sebenar. Contohnya:
@InjectMocks private SomeManager someManager;
Dalam kes ini, someManager ialah contoh kelas SomeManager. Anotasi @InjectMocks memberitahu Mockito untuk menyuntik olok-olok someDependency ke dalam contoh someManager.
Nota Permulaan dan Penggunaan
Untuk menggunakan @InjectMocks, anda mesti memulakan olok-olok menggunakan @ RunWith(MockitoJUnitRunner.class) atau Mockito.initMocks(this) untuk JUnit 4 dan @ExtendWith(MockitoExtension.class) untuk JUnit 5. Selain itu, ingat bahawa @InjectMocks mesti digunakan sekali sahaja dalam kelas ujian dan ia harus diletakkan pada medan yang mewakili kelas yang sedang diuji .
Contoh Penggunaan
Contoh berikut menggambarkan cara menggunakan @Mock dan @InjectMocks:
@RunWith(MockitoJUnitRunner.class) public class SomeManagerTest { @InjectMocks private SomeManager someManager; @Mock private SomeDependency someDependency; // this will be injected into someManager // tests... }
Dalam ujian ini, olok-olok someDependency akan disuntik secara automatik ke dalam contoh someManager, membolehkan anda menguji interaksi mereka dengan berkesan.
Atas ialah kandungan terperinci Apakah Perbezaan Antara Anotasi @Mock dan @InjectMocks Mockito?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!