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

JUnit測試控制@Test執(zhí)行順序的三種方式小結(jié)

 更新時間:2021年09月06日 11:40:05   作者:什么都不會h  
這篇文章主要介紹了JUnit測試控制@Test執(zhí)行順序的三種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

JUnit測試控制@Test執(zhí)行順序

第一種

@FixMethodOrder(MethodSorters.JVM)

從上到下 執(zhí)行@Test

第二種(推薦)

@FixMethodOrder(MethodSorters.NAME_ASCENDING) 

按方法名字順序執(zhí)行@Test

第三種

@FixMethodOrder(MethodSorters.DEFAULT)

默認方法,不可預期

Junit測試方法保證執(zhí)行順序

由于需要做自動化測試,所以需要比較完善的單元測試。但是又因為某些測試的執(zhí)行依賴另外一個測試產(chǎn)生的結(jié)果,所以希望所寫的test case按照自己希望的順序來執(zhí)行。

隨后博主查閱資料發(fā)現(xiàn)了FixMethodOrder注解,可以有三種方式可以控制test執(zhí)行順序。

  /**
     * Sorts the test methods by the method name, in lexicographic order, with {@link Method#toString()} used as a tiebreaker
     */
    NAME_ASCENDING(MethodSorter.NAME_ASCENDING),
    /**
     * Leaves the test methods in the order returned by the JVM. Note that the order from the JVM may vary from run to run
     */
    JVM(null),
    /**
     * Sorts the test methods in a deterministic, but not predictable, order
     */
    DEFAULT(MethodSorter.DEFAULT);

大概上就是上面三種,很多大佬的博客上都對這幾種有講解以及示例,博主在這里就不啰嗦了,下面說一下我的一些疑問以及發(fā)現(xiàn)。

當使用默認排序時

@FixMethodOrder(MethodSorters.DEFAULT)
public class testDemo{
    
    @Test
    public void B(){
        System.out.println("b");
    }
    @Test
    public void C(){
        System.out.println("c");
    }
    @Test
    public void A(){
        System.out.println("a");
    }
    @Test
    public void AB(){
        System.out.println("ab");
    }
    @Test
    public void AC(){
        System.out.println("ac");
    }
    @Test
    public void A1(){
        System.out.println("a1");
    }
}

輸出

a
b
c
a1
ab
ac

這只是博主眾多測試結(jié)果中的一個,實際上與API中描述的“but not predictable”有所出入,執(zhí)行的順序是可預期的。

因為觀察到,名字短的總排在前面,ascii碼小的總在前面,所以博主猜測有可能順序跟方法名字的字符串的hashcode有關的,于是加上hashcode方法輸出之后,得到結(jié)果:

方法A:65
方法B:66
方法C:67
方法A1:2064
方法AB:2081
方法AC:2082

所以可以得出結(jié)論,當單元測試使用默認執(zhí)行順序的時候,測試方法執(zhí)行的順序是跟測試方法名字符串的hashcode大小線性相關。

Junit執(zhí)行時應該是把所有的有@test注釋的方法存到一個容器里,然后交由jvm去一一執(zhí)行(博主還沒來得及仔細去研讀Junit的源碼,這是本人的猜測)。那么問題來了,這一系列的方法是在同一個線程下還是多個線程一起執(zhí)行的呢?

其實從測試的執(zhí)行順序可以控制不難猜出,多個測試方法是串行執(zhí)行的,但是實踐才是檢驗真理的唯一標準。

代碼就不貼了,有興趣的同學可以自己寫一下看看,就是在第二順位執(zhí)行的方法那里讓他休眠一下,觀察是否也會阻塞第三個方法。

最終的結(jié)果也證明了猜想。

我現(xiàn)在看的還比較淺顯,有時間的話會去研讀Junit的底層源碼。以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家

相關文章

  • Java8接口的默認方法

    Java8接口的默認方法

    這篇文章主要為大家介紹了Java8接口的默認方法,還為大家默認方法的多重繼承,感興趣的朋友可以參考一下
    2016-01-01
  • MyBatis查詢數(shù)據(jù)返回null的解決

    MyBatis查詢數(shù)據(jù)返回null的解決

    本文主要介紹了MyBatis查詢數(shù)據(jù)返回null的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • SpringBoot實現(xiàn)多個ApplicationRunner時部分接口未執(zhí)行問題

    SpringBoot實現(xiàn)多個ApplicationRunner時部分接口未執(zhí)行問題

    這篇文章主要介紹了SpringBoot實現(xiàn)多個ApplicationRunner時部分接口未執(zhí)行問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java中的static關鍵字深入理解

    Java中的static關鍵字深入理解

    這篇文章主要介紹了Java中的static關鍵字深入理解,文字和代碼列舉了實際例子,有感興趣的同學可以研究下
    2021-03-03
  • Java排序算法之桶排序算法解析

    Java排序算法之桶排序算法解析

    這篇文章主要介紹了Java排序算法之桶排序算法解析,桶排序 (Bucket sort)或所謂的箱排序,是一個排序算法,工作原理是將數(shù)組分到有限數(shù)量的桶子里,每個桶子再個別排序,有可能再使用別的排序算法或是以遞歸方式繼續(xù)使用桶排序進行排序,需要的朋友可以參考下
    2023-10-10
  • Java變量常量聲明和定義原理解析

    Java變量常量聲明和定義原理解析

    這篇文章主要介紹了Java變量常量聲明和定義原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • java生成xml格式文件的方法

    java生成xml格式文件的方法

    這篇文章主要介紹了java生成xml格式文件的方法,涉及java節(jié)點遍歷與屬性操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • Springboot 整合 Java DL4J 打造文本摘要生成系統(tǒng)

    Springboot 整合 Java DL4J 打造文本摘要生成系統(tǒng)

    本文介紹了如何使用SpringBoot整合JavaDeeplearning4j構建文本摘要生成系統(tǒng),該系統(tǒng)能夠自動從長篇文本中提取關鍵信息,生成簡潔的摘要,幫助用戶快速了解文本的主要內(nèi)容,技術實現(xiàn)包括使用LSTM神經(jīng)網(wǎng)絡進行模型構建和訓練,并通過SpringBoot集成RESTfulAPI接口
    2024-11-11
  • 如何使用Spring MVC的消息轉(zhuǎn)換器設置日期格式

    如何使用Spring MVC的消息轉(zhuǎn)換器設置日期格式

    這篇文章主要介紹了如何使用Spring MVC的消息轉(zhuǎn)換器設置日期格式,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • 解決Spring Cloud中Feign/Ribbon第一次請求失敗的方法

    解決Spring Cloud中Feign/Ribbon第一次請求失敗的方法

    這篇文章主要給大家介紹了關于解決Spring Cloud中Feign/Ribbon第一次請求失敗的方法,文中給出了三種解決的方法,大家可以根據(jù)需要選擇對應的方法,需要的朋友們下面來一起看看吧。
    2017-02-02

最新評論

项城市| 隆昌县| 竹溪县| 敖汉旗| 白朗县| 青河县| 邯郸市| 离岛区| 延川县| 玛纳斯县| 重庆市| 克什克腾旗| 柘荣县| 揭东县| 湖南省| 上饶市| 北京市| 邻水| 丰城市| 昌平区| 古丈县| 安阳县| 隆回县| 无棣县| 深水埗区| 斗六市| 沭阳县| 区。| 丰县| 温泉县| 衡阳县| 英吉沙县| 东丰县| 云南省| 临夏市| 定南县| 永德县| 葵青区| 西丰县| 盱眙县| 利津县|