Rumah  >  Artikel  >  Java  >  Pendekatan Mengejek Mana yang Sesuai untuk Anda: @Mock, @MockBean, atau Mockito.mock()?

Pendekatan Mengejek Mana yang Sesuai untuk Anda: @Mock, @MockBean, atau Mockito.mock()?

Susan Sarandon
Susan Sarandonasal
2024-10-26 06:52:30571semak imbas

 Which Mocking Approach is Right for You: @Mock, @MockBean, or Mockito.mock()?

Memahami Perbezaan Antara @Mock, @MockBean dan Mockito.mock()

Ujian unit selalunya melibatkan kebergantungan mengejek, tetapi terdapat pendekatan yang berbeza untuk melakukannya di Jawa. Untuk membezakan antara pilihan ini, mari kita terokai tujuan dan fungsi berbeza @Mock, @MockBean dan Mockito.mock().

@Mock dan Mockito.mock()

Kedua-dua @Mock dan Mockito.mock() berasal daripada perpustakaan Mockito, yang menyediakan sintaks berasaskan anotasi dan kaedah langsung untuk membuat olok-olok.

Menggunakan @Mock dengan anotasi @RunWith membolehkan Mockito anotasi semasa pelaksanaan ujian. Anotasi ini menandakan pembolehubah yang dilampirkannya sebagai olok-olok Mockito.

import org.mockito.Mock;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
    @Mock
    private MyService myservice;
}

Sebaliknya, Mockito.mock() mencipta olok-olok secara langsung:

import org.mockito.Mockito;
...
MyService myservice = Mockito.mock(MyService.class);

@MockBean from Spring Boot

@MockBean, sebaliknya, disediakan oleh pustaka ujian Spring Boot, khususnya di bawah kelas org.springframework.boot.test.mock.mockito.MockBean. Anotasi ini direka khusus untuk digunakan dengan konteks Spring Boot.

@MockBean membenarkan penambahan kacang olok-olok pada Konteks Aplikasi Musim Bunga, dengan berkesan mengatasi atau menambah olok-olok sebagai ganti contoh kacang sebenar.

Memilih Pilihan Yang Tepat: Classic Mockito lwn. @MockBean

Bila hendak menggunakan pendekatan yang mana bergantung pada senario ujian dan cara kebergantungan diurus:

  • Klasik Mockito: Sesuai untuk ujian unit di mana anda tidak bergantung pada bekas Spring Boot dan ingin mengasingkan komponen yang diuji. Pendekatan ini sangat cekap dan menggalakkan pengasingan.
  • @MockBean: Diutamakan untuk ujian yang memerlukan interaksi dengan bekas Spring Boot, terutamanya apabila mengejek kacang yang diuruskan oleh bekas.

Penggunaan @MockBean biasa dengan Spring WebMVC

Contohnya, dalam senario ujian web yang dianotasi dengan @WebMvcTest, @MockBean biasanya digunakan untuk mengolok-olok kacang yang digunakan oleh pengawal yang sedang diuji:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
...
@WebMvcTest(FooController.class)
public class FooControllerTest {
    @Autowired
    private MockMvc mvc;

    @MockBean
    private FooService fooServiceMock;
}

Dengan memahami perbezaan ini dan memilih pendekatan yang sesuai berdasarkan keperluan ujian anda, anda boleh mengurus kebergantungan dengan berkesan dan memastikan ujian yang cekap dan tepat dalam Java dengan Mockito dan Spring Boot.

Atas ialah kandungan terperinci Pendekatan Mengejek Mana yang Sesuai untuk Anda: @Mock, @MockBean, atau Mockito.mock()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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