Rangka kerja mengejek seperti Mockito dan EasyMock membolehkan anda mengasingkan unit yang diuji dari kebergantungannya semasa ujian unit. Pengasingan ini memastikan bahawa ujian anda hanya memberi tumpuan kepada fungsi unit itu sendiri, menghalang faktor luaran daripada mempengaruhi keputusan ujian. Mari kita lihat cara menggunakan Mockito, pilihan yang popular, sebagai contoh.
Pertama, anda perlu menambah kebergantungan Mockito ke pom.xml
projek anda (untuk Maven) atau build.gradle
(untuk Gradle). Kemudian, dalam kelas ujian anda, anda membuat objek mengejek menggunakan kaedah Mockito.mock()
. Objek mock ini mensimulasikan tingkah laku ketergantungan sebenar.
<code class="java">import org.mockito.Mockito; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; // ... your classes ... public class MyServiceTest { @Test void testMyMethod() { // Create a mock object of the dependency DependencyInterface dependency = Mockito.mock(DependencyInterface.class); // Set up the behavior of the mock object Mockito.when(dependency.someMethod("input")).thenReturn("expectedOutput"); // Create an instance of the class under test, injecting the mock object MyService service = new MyService(dependency); // Call the method under test String result = service.myMethod("input"); // Assert the expected result assertEquals("expectedOutput", result); } }</code>
Dalam contoh ini, DependencyInterface
adalah kebergantungan MyService
. Kami membuat mengejek DependencyInterface
dan menentukan tingkah lakunya menggunakan Mockito.when()
. Mockito.when(dependency.someMethod("input")).thenReturn("expectedOutput")
menentukan bahawa apabila someMethod
dipanggil dengan "input", ia harus kembali "dijangkakan semula". Akhirnya, kami menegaskan bahawa myMethod
of MyService
mengembalikan nilai yang diharapkan. EasyMock mengikuti corak yang sama, walaupun sintaksnya berbeza sedikit.
Menulis ujian unit yang berkesan dengan rangka kerja mengejek memerlukan pertimbangan yang teliti terhadap beberapa amalan terbaik:
testMethodName_GivenCondition_WhenAction_ThenResult
) membantu dalam kebolehbacaan.Apabila berurusan dengan kebergantungan yang kompleks, pertimbangkan strategi ini:
Mockito.spy()
untuk membuat objek pengintip. Ini membolehkan anda mengejek kaedah khusus objek sebenar semasa meninggalkan orang lain yang tidak disentuh. Ini berguna apabila anda ingin menguji interaksi dengan kebergantungan sebahagiannya.Beberapa perangkap biasa boleh menghalang keberkesanan ujian unit anda:
Mockito.doThrow()
untuk mensimulasikan pengecualian yang dibuang oleh kebergantungan yang dihina.@InjectMocks
(Mockito): Untuk kes yang lebih mudah, menggunakan anotasi @InjectMocks
dapat mengurangkan kod boilerplate untuk suntikan ketergantungan. Ingatlah untuk menggunakan @Mock
untuk kebergantungan anda untuk membiarkan Mockito menyuntik objek mengejek.Dengan mengikuti amalan terbaik ini dan mengelakkan perangkap yang biasa ini, anda boleh memanfaatkan kerangka kerja yang mengerikan seperti Mockito dan Easymock untuk menulis ujian unit yang mantap dan boleh dipercayai untuk aplikasi Java anda.
Atas ialah kandungan terperinci Bagaimanakah saya menggunakan rangka kerja mengejek seperti Mockito atau Easymock dalam ujian unit Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!