中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringRunner和SpringJUnit4ClassRunner的區別是什么

發布時間:2023-04-26 17:49:16 來源:億速云 閱讀:163 作者:iii 欄目:開發技術

本篇內容介紹了“SpringRunner和SpringJUnit4ClassRunner的區別是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    SpringRunner和SpringJUnit4ClassRunner有什么區別?

    @RunWith(SpringRunner.class)
    @RunWith(SpringJUnit4ClassRunner.class)

    這兩個有什么區別?

    SpringRunner 繼承了SpringJUnit4ClassRunner,沒有擴展任何功能;使用前者,名字簡短而已。

    SpringRunner無法映射到SpringJUnit4ClassRunner

    如果在Maven依賴中可以看到該庫已經載入,必須去掉<scope>test</scope>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>

    PS:scope的分類

    compile(編譯范圍)

    • 默認就是compile,什么都不配置也就是意味著compile。

    • compile表示被依賴項目需要參與當前項目的編譯,當然后續的測試,運行周期也參與其中,是一個比較強的依賴。

    • 打包的時候通常需要包含進去。

    test(測試范圍)

    • scope為test表示依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯,執行。

    • 比較典型的如junit。

    runntime(運行時范圍)

    • runntime表示被依賴項目無需參與項目的編譯,不過后期的測試和運行周期需要其參與。與compile相比,跳過編譯而已,說實話在終端的項目(非開源,企業內部系統)中,和compile區別不是很大。

    • 比較常見的如JSR&times;&times;&times;的實現,對應的API jar是compile的,具體實現是runtime的,compile只需要知道接口就足夠了。

    • Oracle jdbc驅動架包就是一個很好的例子,一般scope為runntime。

    • 另外runntime的依賴通常和optional搭配使用,optional為true。我可以用A實現,也可以用B實現。

    provided(已提供范圍)

    • provided意味著打包的時候可以不用包進去,別的設施(Web Container)會提供。

    • 事實上該依賴理論上可以參與編譯,測試,運行等周期。

    • 相當于compile,但是在打包階段做了exclude的動作。

    • 例如, 如果你開發了一個web 應用,你可能在編譯 classpath 中需要可用的Servlet API 來編譯一個servlet,但是你不會想要在打包好的WAR 中包含這個Servlet API;這個Servlet API JAR 由你的應用服務器或者servlet 容器提供。

    • 已提供范圍的依賴在編譯classpath (不是運行時)可用。

    • 它們不是傳遞性的,也不會被打包。

    system(系統范圍)

    • system范圍依賴與provided 類似,但是你必須顯式的提供一個對于本地系統中JAR 文件的路徑。

    • 這么做是為了允許基于本地對象編譯,而這些對象是系統類庫的一部分。這樣的構件應該是一直可用的,Maven 也不會在倉庫中去尋找它。

    • 如果你將一個依賴范圍設置成系統范圍,你必須同時提供一個 systemPath 元素。

    • 注意該范圍是不推薦使用的(你應該一直盡量去從公共或定制的 Maven 倉庫中引用依賴)。

    scope的依賴傳遞

    A&ndash;>B&ndash;>C。當前項目為A,A依賴于B,B依賴于C。知道B在A項目中的scope,那么怎么知道C在A中的scope呢?

    答案是:

    • 當C是test或者provided時,C直接被丟棄,A不依賴C;

    • 否則A依賴C,C的scope繼承于B的scope。

    “SpringRunner和SpringJUnit4ClassRunner的區別是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    桂阳县| 班戈县| 安福县| 那曲县| 苗栗市| 元江| 竹山县| 江北区| 辰溪县| 茌平县| 喀喇沁旗| 射阳县| 澄城县| 南平市| 东乌珠穆沁旗| 湖州市| 乌鲁木齐县| 游戏| 文昌市| 东辽县| 错那县| 长岭县| 淅川县| 乌鲁木齐县| 依安县| 四子王旗| 绍兴县| 临沭县| 台前县| 沙坪坝区| 兴业县| 和平县| 建阳市| 曲阳县| 健康| 绵阳市| 东乡县| 遂昌县| 巧家县| 宁陵县| 宣武区|