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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot集成测试中@ContextConfiguration和@SpringApplicationConfiguration之间的区别

發(fā)布時間:2023/12/3 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot集成测试中@ContextConfiguration和@SpringApplicationConfiguration之间的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

即使同時使用@ContextConfiguration和@SpringApplicationConfiguration批注以及SpringJUnit4ClassRunner來指定如何加載Spring應(yīng)用程序上下文,它們之間也存在細微的差異。 盡管@ContextConfiguration在加載應(yīng)用程序上下文方面表現(xiàn)出色,但沒有充分利用Spring Boot的功能 。 Spring Boot應(yīng)用程序最終由SpringApplication(對于JAR而言)或SpringBootServletInitializer加載。 此類不僅加載應(yīng)用程序上下文,而且還允許記錄和加載application.properties或application.yml文件中指定的外部屬性以及Spring Boot框架未加載或啟用的其他功能。
@ContextConfiguration批注。
簡而言之,最好使用@SpringApplicatoinConfiguration批注而不是@ContextConfiguration來編寫針對Spring Boot應(yīng)用程序的集成測試,包括針對網(wǎng)頁或應(yīng)用程序前端的測試。

現(xiàn)在您已經(jīng)知道在編寫Spring引導(dǎo)測試時@ContextConfiguration和@SpringApplicationConfiguration批注之間的本質(zhì)區(qū)別,讓我們了解一些代碼示例的更多細節(jié)。

自從Spring 2.5引入SpringJUnit4ClassRunner以來,Spring Framework就為編寫集成測試提供了出色的支持,并且對于使用Spring Boot應(yīng)用程序進行測試也是如此。 在集成測試期間,您還需要加載bean并將它們與依賴項連接起來。

當(dāng)然,您可以手動執(zhí)行此操作,但是最好由Spring為您處理,這樣做會更好。 它還提供了開箱即用的功能,例如組件掃描,自動裝配,聲明事務(wù)管理,安全性和緩存,這些功能對于在更像生產(chǎn)環(huán)境中的測試非常方便。

Spring Boot-@ ContextConfiguration示例

這是一個簡單的Spring集成測試,其中包含SpringJUnit4ClassRunner和@ContextConfiguration批注,這是用于加載應(yīng)用程序上下文的基本Spring引導(dǎo)批注之一:

@RunWith (SpringJUnit4ClassRunner. class ) @ContextConfiguration (classes=BookConfiguration. class ) public class BookServiceTest { @Autowired private BookService bookService; @Test public void testBookService() { Book aBook = bookService.findByTitle( "Spring Boot in Action" ); assertEquals( "Craig Walls" , aBook.getAuthor()); assertEquals( 40 , aBook.getPrice()); } }

如您所見,BookServiceTest類使用@RunWith JUnit注釋和@ContextConfiguration注釋進行注釋。

@RunWith批注是啟用Spring集成測試所必需的,這就是我們SpringJUnit4ClassRunnner傳遞SpringJUnit4ClassRunnner類的原因,而@ContextConfiguration批注指定了如何加載應(yīng)用程序上下文。

在此示例中,將加載BookConfiguration類中定義的Spring應(yīng)用程序上下文。

SpringJUnit4ClassRunner是一個功能強大的類,它不僅可以加載應(yīng)用程序上下文,還可以將bean自動裝配到測試中。

例如,在這個測試類中,我們需要一個BookService來測試其findByTitle()方法,并且該bean是由SpringJUnit4ClassRunner類自動注入的,因此我們只剩下編寫代碼
testBookService()方法。

現(xiàn)在,回到@ContextConfiguration ,即使它有助于加載應(yīng)用程序上下文,它也不會啟用日志記錄或從application.properties 加載其他屬性 ,例如server.port屬性,在Spring啟動時更改嵌入式tomcat服務(wù)器的端口是必需的應(yīng)用。

要解決該問題,可以使用@SpringApplicaitonCongifguation批注代替@ContextConfiguration ,如下所示:

@RunWith (SpringJUnit4ClassRunner. class ) @SpringApplicaitonCongifguation (classes=BookConfiguration. class ) public class BookServiceTest { @Autowired private BookService bookService; @Test public void testBookService() { Book aBook = bookService.findByTitle( "Cloud Native Java" ); assertEquals( "Josh Long" , aBook.getAuthor()); assertEquals( 40 , aBook.getPrice()); } }

這個行為與上一個示例相同,但是@SpringApplicationConfiguration還將啟用Spring引導(dǎo)日志記錄并加載在application.properties或application.yml文件中定義的其他屬性。

這就是Spring Boot中@ContextConfiguration和@SpringApplicationConfiguration批注之間的區(qū)別 。 即使與SpringJUnit4ClassRunner一起使用并幫助加載應(yīng)用程序上下文,后來的版本還是有用的,因為它還啟用了日志記錄和其他Spring Boot功能。

最好在為Spring Boot應(yīng)用程序編寫集成測試時使用@SpringApplicationConfiguration ,以使測試盡可能接近生產(chǎn)環(huán)境。

感謝您到目前為止閱讀本文。 如果您喜歡我對@SpringApplicationConfiguration和@ContextConfiguration批注的解釋,請與您的朋友和同事分享。 如果您有任何疑問或反饋,請留言。

翻譯自: https://www.javacodegeeks.com/2019/02/difference-spring-boot-integration-test.html

總結(jié)

以上是生活随笔為你收集整理的Spring Boot集成测试中@ContextConfiguration和@SpringApplicationConfiguration之间的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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