国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot項(xiàng)目使用Junit5 + mockito + jacoco 實(shí)現(xiàn)單元測(cè)試以及代碼覆蓋率檢查

這篇具有很好參考價(jià)值的文章主要介紹了springboot項(xiàng)目使用Junit5 + mockito + jacoco 實(shí)現(xiàn)單元測(cè)試以及代碼覆蓋率檢查。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

以springboot3.0.2為例

在創(chuàng)建springboot項(xiàng)目時(shí)會(huì)默認(rèn)添加spring-boot-starter-test依賴,其中已經(jīng)包含了junit、mockito依賴,根據(jù)springboot版本的不同junit和mockito的版本也會(huì)有所不同

先說(shuō)一下各自功能:

  • junit只說(shuō)一點(diǎn),junt4和junit5的注解不同,使用方式略有差異,其他不贅述了,基本用法都懂。
  • mockito是mock的一種框架,相比其他框架來(lái)說(shuō),mockito比較流行,并且springboot默認(rèn)集成的就是mockito。主要用于模擬一些假數(shù)據(jù),以完成單元測(cè)試。舉例來(lái)說(shuō)就是:A服務(wù)已經(jīng)開(kāi)發(fā)完成,但是A服務(wù)中存在需要調(diào)用B服務(wù)的代碼,但是B服務(wù)還未開(kāi)發(fā)完成,為了對(duì)A服務(wù)進(jìn)行測(cè)試,可以使用Mock框架,當(dāng)A服務(wù)中調(diào)用B服務(wù)時(shí),就是用Mock框架返回一個(gè)模擬的假數(shù)據(jù)(返回的假數(shù)據(jù)的數(shù)據(jù)格式和B服務(wù)返回的數(shù)據(jù)格式一致),以實(shí)現(xiàn)對(duì)A服務(wù)業(yè)務(wù)邏輯代碼的測(cè)試。
  • jacoco:代碼覆蓋率檢查,在idea中通過(guò)配置就可以使用,后面會(huì)說(shuō),還有一種方式就是在pom問(wèn)價(jià)中添加jacoco插件也可以實(shí)現(xiàn)代碼覆蓋率檢查,后面同樣會(huì)介紹。

直接上代碼

@RestController
public class UserController {
   
   @Resource
   private UserService userService;

   @RequestMapping(value = "/selectUser",method = RequestMethod.GET)
   public String selectUserById(@RequestParam String id){
   
       UserVO userVO = userService.selectUserById(id);
       return userVO.toString();
   }
}
@Service
public class UserServiceImpl implements UserService {
   

   @Resource
   private UserMapper userMapper;
   @Override
   public UserVO selectUserById(String id) {
   
       if(StringUtil.isEmpty(id)){
   
           throw new NullPointerException("id is null");
       }
       return userMapper.selectUserById(id);
   }
}

@SpringBootTest
public class UserControllerTest {
   
   @MockBean
   private UserMapper userMapper;
   @Resource
   private UserService userService;
   @Resource
   private UserController userController;
   @Test
   public void selectUserById() {
   
       UserVO user = new UserVO();
       user.setId("1001");
       user.setName("test01");
       Mockito.when(userMapper.selectUserById(Mockito.anyString())).thenReturn(user);
       String result = userController.selectUserById("1002");
       Assertions.assertEquals(user.toString(),result);
   }
}
簡(jiǎn)單解釋一下:

@SpringBootTest 是一個(gè)組合注解,由spring提供,標(biāo)注該類(lèi)是一個(gè)測(cè)試類(lèi)
@MockBean 被MockBean標(biāo)注的類(lèi),表示會(huì)為該類(lèi)創(chuàng)建一個(gè)模擬的假對(duì)象,這個(gè)模擬的假對(duì)象的方法的方法體和返回值都為空,該注解也是由spring提供的。
所以上面代碼的意思是,當(dāng)我的代碼邏輯中用到UserMapper這個(gè)類(lèi)中的方法時(shí)都返回null。但是因?yàn)槲掖a中存在 Mockito.when(userMapper.selectUserById(Mockito.anyString())).thenReturn(user); 這句代碼的意思是,當(dāng)我調(diào)用userMapper.selectUserById()時(shí)返回自定義的UserVO對(duì)象。

Mockito常用注解

@Mock 被@Mock標(biāo)記的類(lèi)會(huì)創(chuàng)建一個(gè)虛擬的對(duì)象,該對(duì)象的方法的方法體和返回值都為空
@Spy 被@Spy標(biāo)記的類(lèi)會(huì)創(chuàng)建這個(gè)類(lèi)的真實(shí)實(shí)例,并且如果調(diào)用時(shí)沒(méi)有打樁,則會(huì)執(zhí)行該類(lèi)的真實(shí)邏輯。
@InjectMocks 被@InjectMocks標(biāo)記的類(lèi)會(huì)創(chuàng)建該類(lèi)的真實(shí)實(shí)例,并且該類(lèi)中依賴注入的其他類(lèi)會(huì)使用被@Mock 或者@Spy 標(biāo)記的類(lèi)注入

Spring中和Mock相關(guān)的注解

@MockBean 作用和@Mock相同,不同點(diǎn)是,被@MockBean標(biāo)注的類(lèi)會(huì)被Spring容器管理,而被@Mock標(biāo)記的類(lèi)不會(huì)。@MockBean是由Spring提供的注解,@Mock是Mockito框架的注解
@SpyBean 作用和@Spy相同。區(qū)別與 @MockBean和@Mock的區(qū)別一致。

常用的注解組合使用方式

1. @SpringBootTest + @MockBean / @SpyBean + @Resource / @Autowired文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-422191.html

  @SpringBootTest  標(biāo)注在測(cè)試類(lèi)上。
  @MockBean  標(biāo)注在被測(cè)試類(lèi)中需要的注入的其他類(lèi)上,表示該類(lèi)如果在測(cè)試過(guò)程中遇到,不需要執(zhí)行真實(shí)邏輯,直接返回空。
  @SpyBean  標(biāo)注在被測(cè)試類(lèi)中需要的注入的其他類(lèi)上,表示該類(lèi)如果在測(cè)試過(guò)程中遇到,如果沒(méi)有打樁,則執(zhí)行真實(shí)邏輯,返回真實(shí)的執(zhí)行結(jié)果,如果打樁了,則返回打樁的值。
   @Service
   public class UserServiceImpl implements UserService {
   

 	    @Resource
 	    private UserMapper userMapper;
 	    
 	    @Override
 	    public UserVO selectUserById(String id) {
   
 	        if(

到了這里,關(guān)于springboot項(xiàng)目使用Junit5 + mockito + jacoco 實(shí)現(xiàn)單元測(cè)試以及代碼覆蓋率檢查的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 深度揭秘JUnit5與Mockito的單元測(cè)試神秘面紗

    深度揭秘JUnit5與Mockito的單元測(cè)試神秘面紗

    在今天的學(xué)習(xí)中,我們將深入研究 JUnit 和Mockito,這是 Java 開(kāi)發(fā)中最強(qiáng)大的 單元測(cè)試 工具之一。通過(guò)學(xué)習(xí)如何編寫(xiě)清晰、高效的單元測(cè)試,我們將揭開(kāi)單元測(cè)試的神秘面紗,助力你在項(xiàng)目中寫(xiě)出更健壯的代碼。 提示: 今天的代碼是在第九天代碼的基礎(chǔ)上進(jìn)行開(kāi)發(fā),我們將為

    2024年02月02日
    瀏覽(33)
  • SpringBoot 2.X 整合 JUnit5 及全方位使用手冊(cè)

    SpringBoot 2.X 整合 JUnit5 及全方位使用手冊(cè)

    注解 使用位置 說(shuō)明 @SpringBootTest 標(biāo)注類(lèi) 啟用 SpringBoot 作為測(cè)試核心(可以使用 Spring 的功能) @Test 標(biāo)注方法 表示要測(cè)試的方法 @DisplayName 標(biāo)注類(lèi) 為此測(cè)試類(lèi)命名 @BeforeEach 標(biāo)注方法 在每個(gè)單元測(cè)試之前執(zhí)行 @AfterEach 標(biāo)注方法 在每個(gè)單元測(cè)試之后執(zhí)行 @BeforeAll 標(biāo)注方法 在所有單

    2024年01月16日
    瀏覽(21)
  • Springboot測(cè)試篇 | Junit5

    Springboot測(cè)試篇 | Junit5

    PS: 文章將持續(xù)更新修訂 簡(jiǎn)單介紹吧本篇文章將從Junit5到一些Springboot的特殊場(chǎng)景測(cè)試配置。 JUnit5簡(jiǎn)單介紹:Spring Boot2.2.0版本開(kāi)始引入JUnit5作為單元測(cè)試默認(rèn)庫(kù),作為最新版本的JUnit框架,JUnit5與之前版本的Junit框架有很大的不同,由三個(gè)不同子項(xiàng)目的幾個(gè)不同模塊組成。 JU

    2023年04月08日
    瀏覽(16)
  • SpringBoot2---單元測(cè)試(Junit5)(1)

    SpringBoot2---單元測(cè)試(Junit5)(1)

    org.junit.vintage junit-vintage-engine test org.hamcrest hamcrest-core org.springframework.boot spring-boot-starter-test test 現(xiàn)在版本: @SpringBootTest class Boot05WebAdminApplicationTests { @Test void contextLoads() { } } 以前: @SpringBootTest + @RunWith(SpringRunner.class) SpringBoot整合Junit以后。 編寫(xiě)測(cè)試方法:@Test標(biāo)注(注意需要

    2024年04月29日
    瀏覽(17)
  • 靜態(tài)方法 單元測(cè)試 springboot+mokito+junit5

    CodecUtils的方法是靜態(tài)類(lèi),使用@InjectMocks不能有用,因?yàn)檫@個(gè)注解只能用于非靜態(tài)的對(duì)象。 想要為靜態(tài)方法寫(xiě)單元測(cè)試,可以使用Mockito.mockStatic(Class classToMock)方法,它可以返回一個(gè)MockedStatic對(duì)象,用于模擬靜態(tài)方法的調(diào)用。 1.導(dǎo)入依賴 2.單元測(cè)試 可以參考如下地址,了解如何

    2024年04月25日
    瀏覽(20)
  • 【SpringBoot】mockito+junit 單元測(cè)試

    【SpringBoot】mockito+junit 單元測(cè)試

    CommonServiceImpl 在方法 getSourceCodeMap() 調(diào)用了 ServiceA 的方法 list(QueryBO queryBo) 。 org.mockito.exceptions.base.MockitoException: No tests found in ClientSyncServiceImplTest Is the method annotated with @Test? Is the method public? 解決方案: Test引入 org.junit.Test 不要引入 org.junit.jupiter.api.Test 例如獲取當(dāng)前用戶 moc

    2024年02月09日
    瀏覽(30)
  • 13.Springboot整合junit5單元測(cè)試與生成單元測(cè)試覆蓋率

    13.Springboot整合junit5單元測(cè)試與生成單元測(cè)試覆蓋率

    現(xiàn)在基本大公司都要求單元測(cè)試了,保證我們代碼得質(zhì)量,而我司更是要求覆蓋率要達(dá)到60%以上,所以搞一下。 這里有兩個(gè)方法: 1.使用maven自帶得test,idea右側(cè)maven模塊執(zhí)行項(xiàng)目下得test 2.使用cmd命令,在你的項(xiàng)目pom文件所在目錄 ,打開(kāi)cmd,執(zhí)行如下: 結(jié)果如下:打開(kāi)site文

    2024年02月16日
    瀏覽(23)
  • 【單元測(cè)試】如何使用 JUnit5 框架?

    【單元測(cè)試】如何使用 JUnit5 框架?

    ??Junit5是一個(gè)用于在Java平臺(tái)上進(jìn)行單元測(cè)試的框架。JUnit 5 框架主要由三部分組成:JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform:定義了測(cè)試引擎的 API,是 JVM 上用于啟動(dòng)測(cè)試框架的基礎(chǔ)服務(wù),支持通過(guò) IDE、構(gòu)建工具、命令行等方式運(yùn)行單元測(cè)試。 JUnit Jupiter:包含

    2024年04月10日
    瀏覽(27)
  • 【測(cè)試學(xué)習(xí)】Junit5的簡(jiǎn)單使用

    【測(cè)試學(xué)習(xí)】Junit5的簡(jiǎn)單使用

    目錄 ??需要知道: ??Junit學(xué)習(xí) ??1、常用的注解 ??2、測(cè)試用例的執(zhí)行順序 ??3、參數(shù)化 ??4、斷言 ??5、測(cè)試套件 問(wèn)題1:Selenium與Junit之間的關(guān)系? ????????就像雷鋒和雷峰塔的關(guān)系,就是沒(méi)關(guān)系。 問(wèn)題2:為什么學(xué)習(xí)了Selenium之后還要學(xué)習(xí)Junit? ????????Junit是針對(duì)

    2024年02月16日
    瀏覽(18)
  • 單元測(cè)試junit(原始版本、Spring Boot各版本、junit5)使用介紹

    單元測(cè)試junit(原始版本、Spring Boot各版本、junit5)使用介紹

    ?? 簡(jiǎn)介:java系列技術(shù)分享(??持續(xù)更新中…??) ?? 初衷:一起學(xué)習(xí)、一起進(jìn)步、堅(jiān)持不懈 ?? 如果文章內(nèi)容有誤與您的想法不一致,歡迎大家在評(píng)論區(qū)指正?? ?? 希望這篇文章對(duì)你有所幫助,歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? ?? 更多文章請(qǐng)點(diǎn)擊 單元測(cè)試 junit各版本 使用介紹 官

    2023年04月16日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包