Rumah > Java > javaTutorial > Apakah Perbezaan Antara `@Mock` dan `@InjectMocks` dalam Mockito?

Apakah Perbezaan Antara `@Mock` dan `@InjectMocks` dalam Mockito?

Susan Sarandon
Lepaskan: 2024-11-27 21:55:17
asal
1047 orang telah melayarinya

What's the Difference Between `@Mock` and `@InjectMocks` in Mockito?

Menggambarkan @Mock dan @InjectMocks dalam Rangka Kerja Mockito

Rangka kerja Mockito menyediakan anotasi yang membantu dalam mengejek objek semasa ujian. Dua anotasi yang biasa digunakan ialah @Mock dan @InjectMocks, yang memainkan peranan yang berbeza dalam proses mengejek.

@Mock: A Mock Creation Annotation

Ringkasnya, @Mock berfungsi untuk mencipta objek olok-olok. Ia menjana objek tiruan yang melaksanakan antara muka tertentu atau memanjangkan kelas tertentu. Objek olok-olok digunakan untuk menggantikan kebergantungan sebenar semasa ujian, membenarkan pengasingan komponen individu dan simulasi senario tertentu.

@InjectMocks: Menyuntik Olok-olok ke dalam Contoh Kelas

Berbeza dengan @Mock, @InjectMocks ialah anotasi yang lebih maju yang menggabungkan suntikan ejekan dan kebergantungan. Ia mencipta contoh kelas yang sedang diuji dan, yang penting, menyuntik objek olok-olok yang dibuat dengan anotasi @Mock (atau @Spy) ke dalam tika ini.

Untuk @InjectMocks berfungsi dengan betul, adalah penting untuk menggunakan @ RunWith(MockitoJUnitRunner.class) atau Mockito.initMocks(this) untuk memulakan dan menyuntik kebergantungan olok-olok ke dalam contoh kelas. Dengan JUnit 5, anotasi @ExtendWith(MockitoExtension.class) diperlukan.

Berikut ialah contoh yang memanfaatkan kedua-dua anotasi:

// JUnit 4
@RunWith(MockitoJUnitRunner.class)
public class SomeManagerTest {
   // ...

    @InjectMocks
    private SomeManager someManager;

    @Mock
    private SomeDependency someDependency; // This mock will be injected into someManager
   
    // ... // Tests ...

}
Salin selepas log masuk

Dengan menggunakan @InjectMocks, tika SomeManager akan dibuat dengan objek olok-olok untuk SomeDependency disuntik, membenarkan kes ujian menumpukan pada menguji tingkah laku SomeManager semasa berinteraksi dengan kebergantungan olok-oloknya. Ini memudahkan pengasingan dan ujian senario tertentu tanpa bergantung pada kebergantungan sebenar.

Atas ialah kandungan terperinci Apakah Perbezaan Antara `@Mock` dan `@InjectMocks` dalam Mockito?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan