最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Java 中的單元測試

 更新時(shí)間:2020年09月01日 09:37:53   作者:mySoul  
這篇文章主要介紹了Java 中的單元測試的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

單元測試編寫

Junit 單元測試框架

對于Java語言而言,其單元測試框架,有Junit和TestNG這兩種,

下面是一個(gè)典型的JUnit測試類的結(jié)構(gòu)

package com.example.demo;

import org.junit.jupiter.api.*;

import static org.junit.jupiter.api.Assertions.*;

@DisplayName("售票器類型測試")
class DemoTest {
 // 定義測試的實(shí)例
 private Demo demo;

 // 定義前綴 整個(gè)測試類開始執(zhí)行的地方
 @BeforeAll
 public static void init(){

 }

 // 定義后綴,整個(gè)測試類完成后執(zhí)行的操作
 @AfterAll
 public static void cleanup(){

 }


 // 定義每個(gè)測試用例開始執(zhí)行前的操作
 @BeforeEach
 public void create(){
  this.demo = new Demo();
 }


 // 定義在每個(gè)測試用例完成后執(zhí)行的操作
 @AfterEach
 public void destory(){

 }

 // 執(zhí)行測試用例
 @Test
 @DisplayName("售票后的余額減少")
 public void shouldReduceInventoryWhenticketSoldOut(){

 }



 @Test
 public void ming(){

 }
}

測試結(jié)果如圖所示

層次性表達(dá)測試用例

測試用例較多的情況下,為了層次性表達(dá)測試用例,使用Junit的Nested注解有層次的表達(dá)測試用例

package com.example.demo;

import org.junit.jupiter.api.*;

@DisplayName("交易服務(wù)測試")
class DemoTest {
 @Nested
 @DisplayName("用戶交易測試")
 class Test02{

  @Test
  @DisplayName("交易檢查測試")
  public void test01(){

  }

 }
}

使用Tag標(biāo)簽區(qū)分測試用例

在執(zhí)行Maven打包的時(shí)候,使用tage注解,可以有選擇的執(zhí)行一些測試命令

package com.example.demo;

import org.junit.jupiter.api.*;

@DisplayName("交易服務(wù)測試")
class DemoTest {

 @Test
 @DisplayName("售票后額度減少")
 @Tag("fast")
 public void test01(){

 }

 @Test
 @DisplayName("一次性減少車票")
 @Tag("slow")
 public void test02(){

 }
}

添加相關(guān)的插件

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.0</version>
    <configuration>
     <properties>
      <includeTags>fast</includeTags>
      <excludeTags>slow</excludeTags>
     </properties>
    </configuration>
   </plugin>

斷言

使用Junit命令進(jìn)行斷言處理

@Test
 @DisplayName("售票后額度減少")
 @Tag("fast")
 public void test01(){
  String s = "ming";
  Assertions.assertTrue(s.startsWith("ming"));
  Assertions.assertTrue(s.endsWith("g"));
  Assertions.assertEquals(5, s.length());
 }

此時(shí)斷言錯(cuò)誤。

單元測試的目的

提升軟件質(zhì)量

優(yōu)質(zhì)的單元測試可以保障,開發(fā)質(zhì)量和程序的健壯性,在大多數(shù)互聯(lián)網(wǎng)企業(yè)中,開發(fā)工程師,都會頻繁的執(zhí)行測試用例。

促進(jìn)代碼的優(yōu)化

單元測試是由開發(fā)工程師編寫和維護(hù)的,這會促進(jìn)開發(fā)工程師不斷的重新審視自己的代碼質(zhì)量。

提高研發(fā)效率

單元測試,雖然占用的大量的時(shí)間,但是對后續(xù)的聯(lián)調(diào),集成等,都可以進(jìn)一步的提高研發(fā)的效率。

增加重構(gòu)的自信

代碼重構(gòu)往往是牽一發(fā)而動全身的,當(dāng)修改底層代碼的時(shí)候,通過不斷的單元測試,可以增加重構(gòu)的軟件的自信。

單元測試的基本原則

單元測試要符合AIR原則。單元測試,符合以下三個(gè)原則

1. 自動化

2. 獨(dú)立性

3. 可重復(fù)

單元測試覆蓋率

語句覆蓋

又稱行覆蓋(LineCoverage),段覆蓋(SegmentCoverage),基本塊覆蓋(BasicBlockCoverage),這是最常用也是最常見的一種覆蓋方式,就是度量被測代碼中每個(gè)可執(zhí)行語句是否被執(zhí)行到了。

判定覆蓋

又稱分支覆蓋(BranchCoverage),所有邊界覆蓋(All-EdgesCoverage),基本路徑覆蓋(BasicPathCoverage),判定路徑覆蓋(Decision-Decision-Path)。它度量程序中每一個(gè)判定的分支是否都被測試到了。

條件覆蓋

它度量判定中的每個(gè)子表達(dá)式結(jié)果true和false是否被測試到了

路徑覆蓋

又稱斷言覆蓋(PredicateCoverage)。它度量了是否函數(shù)的每一個(gè)分支都被執(zhí)行了

以上就是淺談Java 中的單元測試的詳細(xì)內(nèi)容,更多關(guān)于Java 單元測試的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 關(guān)于maven打包出錯(cuò)的解決方案

    關(guān)于maven打包出錯(cuò)的解決方案

    這篇文章主要介紹了關(guān)于maven打包出錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Mybatis逆向工程運(yùn)行代碼實(shí)例

    Mybatis逆向工程運(yùn)行代碼實(shí)例

    這篇文章主要介紹了Mybatis逆向工程運(yùn)行代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • MyBatis實(shí)現(xiàn)動態(tài)SQL更新的代碼示例

    MyBatis實(shí)現(xiàn)動態(tài)SQL更新的代碼示例

    本文博小編將帶領(lǐng)大家學(xué)習(xí)如何利用 MyBatis 攔截器機(jī)制來優(yōu)雅的實(shí)現(xiàn)這個(gè)需求,文中通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-07-07
  • SpringBoot實(shí)戰(zhàn)記錄之?dāng)?shù)據(jù)訪問

    SpringBoot實(shí)戰(zhàn)記錄之?dāng)?shù)據(jù)訪問

    對于數(shù)據(jù)訪問層,無論是SQL還是NOSQL,Spring Boot默認(rèn)采用整合Spring Data的方式進(jìn)行統(tǒng)一處理,添加大量自動配置,屏蔽了很多設(shè)置,下面這篇文章主要介紹了SpringBoot實(shí)戰(zhàn)記錄之?dāng)?shù)據(jù)訪問,需要的朋友可以參考下
    2022-04-04
  • Java使用JDBC連接數(shù)據(jù)庫的實(shí)現(xiàn)方法

    Java使用JDBC連接數(shù)據(jù)庫的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java使用JDBC連接數(shù)據(jù)庫的實(shí)現(xiàn)方法,包括了詳細(xì)的加載步驟以及完整實(shí)現(xiàn)示例,需要的朋友可以參考下
    2014-09-09
  • 歸并排序的實(shí)現(xiàn)代碼與思路

    歸并排序的實(shí)現(xiàn)代碼與思路

    歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個(gè)非常典型的應(yīng)用。
    2013-03-03
  • 關(guān)于spring data jpa一級緩存的問題

    關(guān)于spring data jpa一級緩存的問題

    這篇文章主要介紹了關(guān)于spring data jpa一級緩存的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Mybatis空值關(guān)聯(lián)的具體實(shí)現(xiàn)

    Mybatis空值關(guān)聯(lián)的具體實(shí)現(xiàn)

    在復(fù)雜的數(shù)據(jù)庫查詢中,處理空值關(guān)聯(lián)是一項(xiàng)常見的需求,本文就來介紹一下Mybatis空值關(guān)聯(lián)的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • JVM完全解讀之GC日志記錄分析

    JVM完全解讀之GC日志記錄分析

    這篇文章主要介紹了JVM完全解讀之GC日志記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-01-01
  • mysql數(shù)據(jù)庫忘記密碼時(shí)如何修改

    mysql數(shù)據(jù)庫忘記密碼時(shí)如何修改

    本文主要介紹了mysql數(shù)據(jù)庫忘記密碼時(shí)如何修改的步驟方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02

最新評論

越西县| 池州市| 依安县| 南漳县| 满洲里市| 台东县| 武城县| 江永县| 富民县| 蓝山县| 沈丘县| 牡丹江市| 黎川县| 郧西县| 望江县| 朝阳市| 襄垣县| 同心县| 凤凰县| 巢湖市| 合作市| 德格县| 吉水县| 武安市| 吉木乃县| 花垣县| 香港 | 景宁| 沙雅县| 来宾市| 庆安县| 靖边县| 大关县| 巴楚县| 武清区| 宿松县| 监利县| 夏津县| 临邑县| 鄱阳县| 临安市|