国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

域名備案成功怎么做網(wǎng)站免費(fèi)的網(wǎng)絡(luò)推廣渠道

域名備案成功怎么做網(wǎng)站,免費(fèi)的網(wǎng)絡(luò)推廣渠道,給政府機(jī)關(guān)做網(wǎng)站的,做響應(yīng)式網(wǎng)站的體會1. 概念 在進(jìn)行單元測試時,特別是針對使用了Spring框架的應(yīng)用程序,我們通常需要與Spring容器交互以獲取被測試對象及其依賴。傳統(tǒng)做法是在每個測試方法中手動創(chuàng)建Spring容器并從中獲取所需的Bean。以下面的兩行常見代碼為例: ApplicationCo…

1. 概念

在進(jìn)行單元測試時,特別是針對使用了Spring框架的應(yīng)用程序,我們通常需要與Spring容器交互以獲取被測試對象及其依賴。傳統(tǒng)做法是在每個測試方法中手動創(chuàng)建Spring容器并從中獲取所需的Bean。以下面的兩行常見代碼為例:

ApplicationContext context = new ClassPathXmlApplicationContext("xxx.xml");
Xxxx xxx = context.getBean(Xxxx.class);

這段代碼做了兩件事:

  1. 創(chuàng)建Spring容器:使用 ClassPathXmlApplicationContext 類的構(gòu)造函數(shù)創(chuàng)建一個Spring容器實(shí)例。這個構(gòu)造函數(shù)接受一個字符串參數(shù),即Spring配置文件(通常是XML格式)的路徑。在這個例子中,配置文件名為 "xxx.xml",位于類路徑(classpath)下。ClassPathXmlApplicationContext 是Spring眾多容器實(shí)現(xiàn)之一,它能從類路徑加載XML配置文件,并據(jù)此創(chuàng)建和管理Bean。
  2. 從容器中獲取Bean:調(diào)用容器實(shí)例(context)的 getBean 方法,傳入想要獲取的Bean的類型或名稱(這里是 Xxxx.class)。getBean 方法會查找并返回與指定類型或名稱匹配的Bean實(shí)例。這樣,我們就得到了需要測試的 Xxxx 類的實(shí)例。

然而,每次編寫單元測試時都重復(fù)這兩行代碼不僅顯得冗余,還增加了維護(hù)成本。尤其是在大型項(xiàng)目中,可能會有多個測試類需要與Spring容器交互,重復(fù)的容器創(chuàng)建和Bean獲取邏輯會使測試代碼變得復(fù)雜且不易管理。

為了解決這個問題,Spring提供了與JUnit的集成方案,允許我們在不手動創(chuàng)建容器的情況下,讓測試框架自動處理Spring容器的創(chuàng)建和Bean的注入。具體而言,Spring提供了一個運(yùn)行器(Runner),如 SpringJUnit4ClassRunner 或更新的 SpringExtension(對于JUnit 5),這些運(yùn)行器可以配合特定的注解(如 @ContextConfiguration)來指示測試框架使用哪個配置文件(或注解配置類)來初始化Spring容器。


以下是使用Spring整合JUnit后的簡化測試代碼示例:

@RunWith(SpringJUnit4ClassRunner.class) // 或 @ExtendWith(SpringExtension.class) for JUnit 5
@ContextConfiguration(locations = {"classpath:xxx.xml"})
public class XxxxTest {@Autowiredprivate Xxxx xxx; // 直接注入待測試的Bean@Testpublic void testSomeMethod() {// 在這里直接使用注入的xxx對象進(jìn)行測試,無需手動創(chuàng)建容器和獲取Bean// ...}
}

通過這種方式:

  • 使用 @RunWith@ExtendWith 注解指定Spring提供的運(yùn)行器,告知JUnit使用Spring的方式來運(yùn)行測試。
  • 使用 @ContextConfiguration 注解指定了Spring配置文件的位置(同樣可以是注解配置類),現(xiàn)在無需在測試代碼中顯式創(chuàng)建 ApplicationContext。
  • 利用 @Autowired 注解直接在測試類的字段上聲明需要注入的Bean,Spring會在容器初始化后自動將對應(yīng)的Bean注入到該字段。

如此一來,可以簡單理解為:

以前,每次編寫單元測試時,都需要手動創(chuàng)建Spring容器并從中獲取被測試對象。這既繁瑣又容易出錯。

現(xiàn)在,通過集成Spring與JUnit,我們可以利用Spring提供的運(yùn)行器和注解來自動化容器創(chuàng)建和Bean注入過程。測試類只需關(guān)注具體的測試邏輯,無需關(guān)心容器管理細(xì)節(jié),代碼更加簡潔、易于維護(hù)。


2. JUnit4 & JUnit5

JUnit4JUnit5 都是幫助Java程序員寫單元測試的工具。簡單來說:

JUnit4 是一款很老但很經(jīng)典的單元測試框架。它使用注解(比如 @Test、@Before、@After)來標(biāo)記測試方法和設(shè)置測試前后的操作。你寫好測試代碼,然后JUnit4幫你運(yùn)行這些測試,告訴你哪些通過了,哪些失敗了。它還有斷言方法(如 assertEquals),讓你檢查程序的實(shí)際輸出是否符合預(yù)期。

JUnit5 是JUnit家族的最新版本,比JUnit4更新、更強(qiáng)大。它繼承了JUnit4的好東西(如注解),但改進(jìn)了很多地方,讓寫測試變得更方便、更靈活:

  • 新特性:JUnit5添加了更多有用的注解(如 @BeforeEach、@AfterEach、@DisplayName),讓測試代碼更易讀、更結(jié)構(gòu)化。還支持參數(shù)化測試(一個測試方法跑多種輸入情況),條件執(zhí)行測試,以及嵌套測試(測試?yán)锩嫣诇y試)。
  • 更好兼容:JUnit5全面支持現(xiàn)代Java版本(如Java 8及以上),能用到Lambda表達(dá)式、Stream等新特性。它還自帶一個平臺,不僅能跑JUnit5的測試,還能跑JUnit4甚至其他測試框架的測試。
  • 更強(qiáng)大擴(kuò)展:JUnit5提供了擴(kuò)展機(jī)制(Extension API),讓你可以更方便地定制測試行為,比如控制測試環(huán)境、模擬依賴、自定義報(bào)告等。這比JUnit4的“規(guī)則”更強(qiáng)大、更易于使用。

所以,如果你剛開始學(xué)習(xí)寫Java單元測試,直接學(xué)JUnit5是個不錯的選擇,因?yàn)樗亲钚碌?、功能最全的。如果你看到一些舊代碼還在用JUnit4,也不用擔(dān)心,大部分基礎(chǔ)知識是相通的,而且JUnit5也能很好地兼容運(yùn)行JUnit4的測試。


3. 整合JUnit5

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="com.sakurapaid.spring6.bean"/>
</beans>

3.1. 搭建子模塊

創(chuàng)建一個名為 spring-junit 的子模塊,用于存放相關(guān)的測試代碼和配置。


3.2. 引入依賴

在子模塊的構(gòu)建文件(如pom.xml或build.gradle)中添加必要的依賴項(xiàng):

<dependencies><!--spring context依賴--><!--當(dāng)你引入Spring Context依賴之后,表示將Spring的基礎(chǔ)依賴引入了--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.2</version></dependency><!--spring對junit的支持相關(guān)依賴--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>6.0.2</version></dependency><!--junit5測試--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.0</version></dependency><!--log4j2的依賴--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.19.0</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j2-impl</artifactId><version>2.19.0</version></dependency>
</dependencies>
  • Spring Context:提供Spring的核心功能,如依賴注入(DI)、AOP等,是使用Spring進(jìn)行應(yīng)用開發(fā)的基礎(chǔ)。
  • Spring Test:包含了Spring對單元測試和集成測試的支持,其中包含與JUnit5集成的SpringJUnit5ClassRunner等工具。
  • JUnit Jupiter API:JUnit5的核心API包,包含編寫單元測試所需的基本注解和斷言。
  • Log4j2:一個流行的日志框架,以及與SLF4J(Simple Logging Facade for Java)適配的實(shí)現(xiàn),用于記錄和管理測試過程中的日志信息。

3.3. 添加配置文件

創(chuàng)建一個名為 beans.xml 的Spring配置文件,內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- 掃描指定包下的@Component、@Service、@Repository、@Controller等注解標(biāo)記的類 --><context:component-scan base-package="com.sakurapaid.spring6.bean"/></beans>

此配置文件中,context:component-scan 標(biāo)簽用于自動掃描指定包(com.atguigu.spring6.bean)下的帶有Spring組件注解(如@Component)的類,并將其注冊為Spring管理的Bean。

同時,復(fù)制一個名為 log4j2.xml 的日志配置文件到項(xiàng)目中,用于配置Log4j2的日志記錄行為。


3.4. 添加Java類

創(chuàng)建一個名為 User 的Java類,使用 @Component 注解標(biāo)記,表示這是一個由Spring管理的Bean:

package com.sakurapaid.spring6.bean;import org.springframework.stereotype.Component;/*** User類說明* 本類用于示例Spring Bean的聲明。* @Component注解:用于標(biāo)記一個類作為Spring的組件,使得該組件可以被Spring的組件掃描器識別并加入到Spring的IoC容器中。*/
@Component
public class User {/*** User類的構(gòu)造函數(shù)* 該構(gòu)造函數(shù)在實(shí)例化User對象時會自動執(zhí)行,用于執(zhí)行一些初始化操作。*/public User() {System.out.println("run user");}
}

當(dāng)Spring容器初始化時,會發(fā)現(xiàn)并創(chuàng)建這個帶有 @Component 注解的 User 類的實(shí)例。


3.5. 測試

編寫一個JUnit5測試類 SpringJUnit5Test,通過Spring與JUnit5的集成來測試 User 類:

package com.sakurapaid.spring6.test;import com.sakurapaid.spring6.bean.User;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;// 方式一:使用@ExtendWith和@ContextConfiguration注解
@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:bean.xml")// 方式二:使用@SpringJUnitConfig注解(推薦)
//@SpringJUnitConfig(locations = "classpath:bean.xml")
public class SpringJUnit5Test {@Autowiredprivate User user;@Testpublic void testUser(){System.out.println(user);}
}

測試類中:

  • @SpringJUnitConfig@ExtendWith(SpringExtension.class) + @ContextConfiguration:這兩種方式都是用來集成Spring與JUnit5的。前者是更簡潔的組合注解,后者則是分別使用注解來指定Spring測試擴(kuò)展和配置文件位置。它們的作用都是讓Spring在測試運(yùn)行前加載配置文件,創(chuàng)建Spring容器,并根據(jù)容器來管理測試類中的Bean。
  • @Autowired:用于自動注入 User 類的實(shí)例。由于 User 類已被Spring管理,所以在測試類中可以通過 @Autowired 注解來直接注入其實(shí)例,無需手動創(chuàng)建。
  • @Test:JUnit5的測試方法注解,表示該方法是一個單元測試。

測試方法 testUser() 中,打印出注入的 user 實(shí)例。當(dāng)運(yùn)行此測試時,Spring容器會先被創(chuàng)建,User 類的實(shí)例會被自動注入到測試類中,然后執(zhí)行測試方法,打印出 User 實(shí)例的信息。


總結(jié):這個示例展示了如何使用JUnit5編寫單元測試,并通過Spring的配置文件和注解來管理測試所需的Bean。測試類借助Spring與JUnit5的集成,能夠便捷地訪問被測試對象及其依賴,從而專注于測試邏輯本身。同時,還配置了Log4j2用于記錄測試過程中的日志信息。


方式一:使用 @ExtendWith@ContextConfiguration 注解

這是JUnit5早期集成Spring的一種方式,通過兩個單獨(dú)的注解來完成:

  1. @ExtendWith(SpringExtension.class)
    • 這是一個JUnit5的通用擴(kuò)展機(jī)制注解,用于指定一個或多個測試擴(kuò)展(Extension),這些擴(kuò)展能夠參與到測試的生命周期管理中,添加額外的功能。
    • SpringExtension 是Spring專門為JUnit5提供的擴(kuò)展實(shí)現(xiàn),它負(fù)責(zé)在測試運(yùn)行前啟動Spring容器,將Spring的依賴注入和AOP等功能與JUnit5測試框架結(jié)合起來。
    • 使用 @ExtendWith(SpringExtension.class) 注解,意味著在運(yùn)行此測試類時,JUnit5會調(diào)用 SpringExtension 來處理與Spring相關(guān)的部分。
  1. @ContextConfiguration("classpath:beans.xml")
    • 這是Spring Test提供的注解,用于指定Spring容器的配置來源。在這里,它指定了一個類路徑下的XML配置文件 beans.xml
    • 當(dāng) SpringExtension 在運(yùn)行測試時啟動Spring容器,它會根據(jù) @ContextConfiguration 注解提供的信息加載配置文件,創(chuàng)建并初始化Spring容器。
    • 有了這個配置,Spring容器就知道如何創(chuàng)建、裝配和管理測試所需的Bean,包括那些被 @Autowired 注解的字段。

方式二:使用 @SpringJUnitConfig 注解(推薦)

@SpringJUnitConfig 是Spring Test為JUnit5專門提供的一個組合注解,它整合了上述兩種方式的功能,使得集成Spring更加簡潔:

  • @SpringJUnitConfig(locations = "classpath:beans.xml")
    • 這是一個單一注解,它同時包含了 @ExtendWith(SpringExtension.class)@ContextConfiguration("classpath:beans.xml") 的功能。
    • 使用 @SpringJUnitConfig,您只需要指定Spring配置文件的位置(如 "classpath:beans.xml"),而不必分別使用 @ExtendWith@ContextConfiguration
    • 這樣做的好處是代碼更簡潔,易于閱讀和理解,同時也避免了重復(fù)指定Spring擴(kuò)展和配置源。

  • 方式一 是通過分別使用 @ExtendWith(SpringExtension.class)@ContextConfiguration("classpath:beans.xml") 注解來集成Spring與JUnit5。
  • 方式二 則是使用更簡潔的 @SpringJUnitConfig(locations = "classpath:beans.xml") 注解,它合并了前兩種注解的功能,是更推薦的集成方式。兩者的目的都是啟動Spring容器,加載指定的配置,以便在JUnit5測試中利用Spring的依賴注入和管理功能。對于初學(xué)者來說,直接使用 @SpringJUnitConfig 會更加直觀和簡便。

4. 整合JUnit4

JUnit4在公司也會經(jīng)常用到,在此也學(xué)習(xí)一下

4.1. 添加依賴

<!-- junit測試 -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>
</dependency>

4.2. 測試

編寫一個JUnit4測試類 SpringJUnit4Test,通過Spring與JUnit4的集成來測試 User 類

import com.atguigu.spring6.bean.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:beans.xml")
public class SpringJUnit4Test {@Autowiredprivate User user;@Testpublic void testUser(){System.out.println(user);}
}

測試類中:

  • @RunWith(SpringJUnit4ClassRunner.class)
    • 這是一個JUnit4特有的注解,用于指定測試類的運(yùn)行器(Runner)。SpringJUnit4ClassRunner 是Spring為JUnit4提供的特殊運(yùn)行器,它能在運(yùn)行測試之前啟動Spring容器,將Spring的依賴注入等功能與JUnit4測試框架結(jié)合。
    • 使用 @RunWith(SpringJUnit4ClassRunner.class),意味著在運(yùn)行此測試類時,JUnit4會使用 SpringJUnit4ClassRunner 而不是默認(rèn)的 JUnit4ClassRunner,從而啟用Spring容器支持。
  • @ContextConfiguration("classpath:beans.xml")
    • 這同樣是Spring Test提供的注解,用于指定Spring容器的配置來源。在這里,它指定了一個類路徑下的XML配置文件 beans.xml。
    • 當(dāng) SpringJUnit4ClassRunner 啟動Spring容器時,它會根據(jù) @ContextConfiguration 注解提供的信息加載配置文件,創(chuàng)建并初始化Spring容器。
    • 有了這個配置,Spring容器就知道如何創(chuàng)建、裝配和管理測試所需的Bean,包括那些被 @Autowired 注解的字段。
  • @Autowired
    • 用于自動注入 User 類的實(shí)例。由于 User 類已被Spring管理,所以在測試類中可以通過 @Autowired 注解來直接注入其實(shí)例,無需手動創(chuàng)建。
  • @Test
    • JUnit4的測試方法注解,表示該方法是一個單元測試。

測試方法 testUser() 中,打印出注入的 user 實(shí)例。當(dāng)運(yùn)行此測試時,Spring容器會先被創(chuàng)建,User 類的實(shí)例會被自動注入到測試類中,然后執(zhí)行測試方法,打印出 User 實(shí)例的信息。


總結(jié):這個示例展示了如何使用JUnit4編寫單元測試,并通過Spring的配置文件和注解來管理測試所需的Bean。測試類借助Spring與JUnit4的集成,能夠便捷地訪問被測試對象及其依賴,從而專注于測試邏輯本身。與JUnit5相比,JUnit4的集成方式使用了不同的注解(如 @RunWith),但基本思路是一致的:啟動Spring容器,加載配置,注入依賴,然后執(zhí)行測試。

http://m.aloenet.com.cn/news/32021.html

相關(guān)文章:

  • 無錫做網(wǎng)站優(yōu)化價格301313龍虎榜
  • 做網(wǎng)站組織架構(gòu)西安高端模板建站
  • 做網(wǎng)站端口無法清除十大經(jīng)典事件營銷案例分析
  • 頂尖網(wǎng)站設(shè)計(jì)東莞百度快照優(yōu)化排名
  • 小魚賺錢網(wǎng)站能重復(fù)做任務(wù)嗎電商網(wǎng)站對比表格
  • 大良營銷網(wǎng)站建設(shè)價位在線看crm系統(tǒng)
  • 房山成都網(wǎng)站建設(shè)肇慶seo按天收費(fèi)
  • 西安國內(nèi)做網(wǎng)站的公司有哪些排行榜前十名
  • html5flash設(shè)計(jì)開發(fā)|交互設(shè)計(jì)|網(wǎng)站建設(shè) 青島樂天seo培訓(xùn)中心
  • 網(wǎng)絡(luò)營銷策略內(nèi)容廈門seo俱樂部
  • 做網(wǎng)站需要什么技術(shù)搜索關(guān)鍵詞站長工具
  • 高端網(wǎng)站哪個比較好線上產(chǎn)品推廣方案
  • 針對人群不同 網(wǎng)站做細(xì)分全球疫情最新數(shù)據(jù)
  • 免費(fèi)空間申請網(wǎng)站網(wǎng)絡(luò)營銷在哪里學(xué)比較靠譜
  • 網(wǎng)站備案流程圖上海自動seo
  • 2015年做哪個網(wǎng)站能致富建網(wǎng)站用什么工具
  • 旅游搜索網(wǎng)站開發(fā)百度網(wǎng)站推廣怎么做
  • 鎮(zhèn)江做網(wǎng)站哪家公司好靠網(wǎng)絡(luò)營銷火起來的企業(yè)
  • 方城網(wǎng)站制作網(wǎng)絡(luò)營銷專業(yè)課程
  • 重慶的做網(wǎng)站公司百度風(fēng)云榜小說榜排名
  • 專業(yè)做網(wǎng)站價格廈門百度關(guān)鍵詞優(yōu)化
  • 網(wǎng)站推廣的技巧和方法企業(yè)網(wǎng)站的網(wǎng)絡(luò)營銷功能
  • 在什么網(wǎng)站做貿(mào)易好最簡短的培訓(xùn)心得
  • 江蘇建設(shè)廳官方網(wǎng)站安全員北京專門做seo
  • 佛山市網(wǎng)站建設(shè)保定網(wǎng)站建設(shè)方案優(yōu)化
  • 一個域名做多個網(wǎng)站快速seo優(yōu)化
  • 如何做話費(fèi)卡回收網(wǎng)站開發(fā)網(wǎng)站多少錢
  • 如何增加網(wǎng)站的訪問量手機(jī)網(wǎng)站模板免費(fèi)下載
  • 做網(wǎng)站反復(fù)修改今天熱點(diǎn)新聞事件
  • 有哪些做筆譯的網(wǎng)站怎樣下載優(yōu)化大師