Rumah >Java >javaTutorial >@Mock vs. @InjectMocks dalam Mockito: Apakah Perbezaannya?

@Mock vs. @InjectMocks dalam Mockito: Apakah Perbezaannya?

Susan Sarandon
Susan Sarandonasal
2024-11-24 05:09:11350semak imbas

@Mock vs. @InjectMocks in Mockito: What's the Difference?

Memahami Perbezaan Antara @Mock dan @InjectMocks dalam Mockito

Mockito, rangka kerja mengejek yang terkenal di Java, menyediakan dua anotasi, @Mock dan @InjectMocks, untuk memudahkan ujian unit. Walaupun kedua-duanya memainkan peranan penting dalam proses ujian, mereka mempunyai fungsi yang berbeza.

@Mock: The Mock Creation Tool

Anotasi @Mock digunakan untuk mencipta olok-olok objek. Objek olok-olok ialah pengganti ringan untuk objek sebenar yang mensimulasikan kelakuannya dengan cara terkawal. Apabila anda menganotasi kelas atau antara muka dengan @Mock, Mockito menjana pelaksanaan olok-olok yang boleh dimanipulasi dan disahkan semasa ujian unit.

@InjectMocks: Fasilitator Suntikan Ketergantungan

Berbeza dengan @Mock, @InjectMocks menyediakan tujuan yang berbeza. Ia digunakan pada kelas yang diuji untuk menyuntik olok-olok atau pengintip (contoh kelas sebenar yang boleh diejek sebahagiannya) yang telah dibuat menggunakan anotasi @Mock. Proses suntikan ini berlaku secara automatik semasa pemulaan ujian, menjadikannya mudah untuk menyediakan konfigurasi ujian.

Cara Mereka Bekerja Sama

Untuk menunjukkan interaksi antara @Mock dan @ InjectMocks, pertimbangkan coretan kod berikut:

@RunWith(MockitoJUnitRunner.class)
public class SomeManagerTest {

    @InjectMocks
    private SomeManager someManager;

    @Mock
    private SomeDependency someDependency; // injected into someManager

    // tests...

}

Dalam contoh ini, anotasi @InjectMocks digunakan kepada kelas SomeManagerTest, dengan menyatakan bahawa ia adalah kelas yang sedang diuji. Anotasi @Mock digunakan untuk membuat olok-olok untuk kelas SomeDependency. Apabila ujian dijalankan, kebergantungan olok-olok disuntik ke dalam contoh someManager.

Dengan menggabungkan @Mock dan @InjectMocks, kami boleh menyelaraskan proses persediaan olok-olok dan memudahkan ujian interaksi kelas yang kompleks. Adalah penting untuk ambil perhatian bahawa MockitoJUnitRunner.class (atau MockitoExtension.class untuk JUnit 5) mesti disertakan dalam kelas ujian atau dimulakan secara manual untuk memulakan olok-olok dan menyuntiknya.

Atas ialah kandungan terperinci @Mock vs. @InjectMocks dalam Mockito: Apakah Perbezaannya?. 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