日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot+Junt+Mock测试方法

發(fā)布時間:2024/9/30 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot+Junt+Mock测试方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、Mock測試定義

Mock 測試就是在測試過程中,對于某些不容易構造(如 HttpServletRequest 必須在Servlet 容器中才能構造出來)或者不容易獲取比較復雜的對象(如 JDBC 中的ResultSet 對象),用一個虛擬的對象(Mock 對象)來創(chuàng)建以便測試的測試方法。Mock 最大的功能是幫你把單元測試的耦合分解開,如果你的代碼對另一個類或者接口有依賴,它能夠幫你模擬這些依賴,并幫你驗證所調用的依賴的行為

使用場景:

當一個方法中調用第三方服務(第三方接口、數(shù)據(jù)庫操作等)不可用時,或者想要避開此方法的相關依賴,可以對這些第三方類或者依賴類mock掉,繞過(避開、屏蔽、跳過)這些類的方法,讓其他服務正常運行,按我們規(guī)定的返回值進行處理

一個JUnit4的單元測試用例執(zhí)行順序為:

@BeforeClass -> @Before -> @Test -> @After -> @AfterClass;

?

二、使用方法

1.添加依賴

<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId> </dependency> <dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId> </dependency>

2.使用方法

1)類上添加@RunWith注解,啟動junt的SpringRunner

2)使用@InjectMocks注解,將所有的mock類注入到這個對象實例中,因為沒有注入spring容器,必須要進行實例化

3)使用@Mock注解,mock一個對象,模擬它的功能,一般出現(xiàn)在@InjectMocks注解對象方法中,當使用@InjectMocks注解的對象方法時,只要出現(xiàn)@Mock聲明的對象方法,全都執(zhí)行虛擬方法,不進入具體實現(xiàn),因此屏蔽掉了@Mock對象方法,不會影響到其他方法

Mock測試類實現(xiàn)方法

@RunWith(SpringRunner.class) @Slf4j public class UserServiceMockTest {@InjectMocksprivate UserService userService=new UserServiceImpl();@Mockprivate UserMapper userMapper;@Beforepublic void setUserMapperMock(){log.info("進入到@Before方法:");//MockitoAnnotations.initMocks(this);}@Testpublic void testUserServiceMock(){User user=new User();user.setId(2);user.setDescription("測試Mock");log.info("進入到@Test方法:");Mockito.when(userService.queryUserById(user)).thenReturn(user);log.info("Mock執(zhí)行結果:{}",userService.testMock("END"));}@Afterpublic void testAfter(){log.info("進入到@After方法:");} }

UserServiceImpl類中實現(xiàn)方法

@Overridepublic User queryUserById(User user) {testMock(user.getDescription());return userMapper.selectByPrimaryKey(user.getId());}@Overridepublic String testMock(String str) {System.out.println(str);return str;}

3.輸出結果

可以看到執(zhí)行順序是正確的,而且在UserServiceImpl類中,屏蔽掉了中queryUserById方法的userMapper相關方法,其他正常執(zhí)行

總結

以上是生活随笔為你收集整理的SpringBoot+Junt+Mock测试方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。