java mock什么意思_java @Mock, @MockBean 与 Mockito.mock( ) 之间的差异
純Mockito庫import org.mockito.Mock;
...
@Mock
MyService myservice;
和import org.mockito.Mockito;
...
MyService myservice = Mockito.mock(MyService.class);
來自Mockito庫,在功能上是等價的,
它們允許模擬類或接口,并記錄和驗證行為。
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
啟用Mockito注釋的另一種方法是使用@RunWith來注釋測試類,方法是指定執行此任務的MockitoJUnitRunner以及其他有用的東西:@RunWith(org.mockito.runners.MockitoJUnitRunner.class)
public MyClassTest{...}
Spring Boot庫包裝Mockito庫
這是一個Spring Boot類:import org.springframework.boot.test.mock.mockito.MockBean;
...
@MockBean
MyService myservice;
類包含在spring-boot-test庫中。
它允許在spring ApplicationContext中添加Mockito mocks,
通常,@WebMvcTest將僅限于一個控制器,并且與@MockBean一起使用,為所需的協作者提供模擬實現。
以下是一個示例:import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
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.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@RunWith(SpringRunner.class)
@WebMvcTest(FooController.class)
public class FooControllerTest {
@Autowired
private MockMvc mvc;
@MockBean
private FooService fooServiceMock;
@Test
public void testExample() throws Exception {
Foo mockedFoo = new Foo("one","two");
Mockito.when(fooServiceMock.get(1))
.thenReturn(mockedFoo);
mvc.perform(get("foos/1")
.accept(MediaType.TEXT_PLAIN))
.andExpect(status().isOk())
.andExpect(content().string("one two"));
}
}
總結
以上是生活随笔為你收集整理的java mock什么意思_java @Mock, @MockBean 与 Mockito.mock( ) 之间的差异的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 异常抛出 顺序_java异常抛
- 下一篇: java主程序怎样调用子程序_存过和函数