Mockito dan Menguji Kelas Abstrak
Menguji kelas abstrak boleh menimbulkan cabaran. Olok-olok kerajinan tangan secara manual melalui pewarisan terasa menyusahkan dan berlebihan. Nasib baik, rangka kerja mengejek seperti Mockito menawarkan pendekatan alternatif.
BANTUAN Mockito DENGAN KELAS ABSTRAK MENGEJEMKAN
Mockito membolehkan mengejek kelas abstrak yang lancar sambil memintas keperluan untuk subkelas yang jelas. Dengan menggunakan Mockito.mock(My.class, Answers.CALLS_REAL_METHODS), anda boleh mencipta olok-olok yang diwarisi daripada kelas abstrak. Olok-olok ini bertindak sebagai kedua-dua subkelas dan olok-olok separa.
MENGELAK PELAKSANAAN KAEDAH ABSTRAK
Konfigurasi Answers.CALLS_REAL_METHODS membolehkan anda mengejek kaedah abstrak tanpa melaksanakannya. Kaedah sebenar akan dilaksanakan seperti sedia ada, melainkan jika dihentikan secara eksplisit dalam ujian anda.
CONTOH PELAKSANAAN
Pertimbangkan kelas abstrak berikut dan kes ujian:
<code class="java">public abstract class My { public Result methodUnderTest() { ... } protected abstract void methodIDontCareAbout(); } public class MyTest { @Test public void shouldFailOnNullIdentifiers() { My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); } }</code>
Dalam contoh ini, olok-olok dibuat menggunakan Mockito.mock(), dan Answers.CALLS_REAL_METHODS memastikan kaedah methodUnderTest() dijalankan seperti yang ditakrifkan dalam kelas abstrak, walaupun methodIDontCareAbout() tidak dilaksanakan . Pendekatan ini memudahkan proses ujian dan menghapuskan keperluan untuk penciptaan subkelas manual.
Atas ialah kandungan terperinci Bagaimanakah Mockito Boleh Membantu Anda Menguji Kelas Abstrak Tanpa Subkelas Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!