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 ... }
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!