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
974 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!

sumber:php.cn
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