更新時(shí)間:2021-07-05 來(lái)源:黑馬程序員 瀏覽量:
在實(shí)際開(kāi)發(fā)中,每當(dāng)完成一個(gè)功能接口或業(yè)務(wù)方法的編寫(xiě)后,通常都會(huì)借助單元測(cè)試驗(yàn)證該功能是否正確。Spring Boot對(duì)項(xiàng)目的單元測(cè)試提供了很好的支持,在使用時(shí),需要提前在項(xiàng)目的pom.xml文件中添加spring-boot-starter-test測(cè)試依賴(lài)啟動(dòng)器,可以通過(guò)相關(guān)注解實(shí)現(xiàn)單元測(cè)試。這里,以之前創(chuàng)建的chapter01項(xiàng)目為例對(duì)Spring Boot項(xiàng)目的單元測(cè)試進(jìn)行使用演示,具體步驟如下。
1.添加spring-boot-starter-test測(cè)試依賴(lài)啟動(dòng)器
在項(xiàng)目的pom.xml文件中添加spring-boot-starter-test測(cè)試依賴(lài)啟動(dòng)器,示例代碼如下。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>上述代碼中,展示了Spring Boot框架集成單元測(cè)試提供的依賴(lài)啟動(dòng)器,其<scope>范圍默認(rèn)為test。需要說(shuō)明的是,如果是使用Spring Initializr方式搭建的Spring Boot項(xiàng)目,會(huì)自動(dòng)加入spring-boot-starter-test測(cè)試依賴(lài)啟動(dòng)器,無(wú)需開(kāi)發(fā)者再手動(dòng)添加。
2.編寫(xiě)單元測(cè)試類(lèi)和測(cè)試方法
在項(xiàng)目中添加測(cè)試依賴(lài)啟動(dòng)器后,可以編寫(xiě)Spring Boot項(xiàng)目中相關(guān)方法對(duì)應(yīng)的單元測(cè)試。如果是使用Spring Initializr方式搭建的Spring Boot項(xiàng)目,會(huì)在src.test.java測(cè)試目錄下自動(dòng)創(chuàng)建與項(xiàng)目主程序啟動(dòng)類(lèi)對(duì)應(yīng)的單元測(cè)試類(lèi)。例如,chapter01項(xiàng)目的Chapter01ApplicationTests是自動(dòng)生成的單元測(cè)試類(lèi),內(nèi)容如文件1所示。
文件1 Chapter01ApplicationTests.java
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; /** * 使用Spring Initializr方式自動(dòng)創(chuàng)建的主程序啟動(dòng)類(lèi)對(duì)應(yīng)的單元測(cè)試類(lèi) */ @RunWith(SpringRunner.class) // 測(cè)試啟動(dòng)器,并加載Spring Boot測(cè)試注解 @SpringBootTest // 標(biāo)記為Spring Boot單元測(cè)試類(lèi),并加載項(xiàng)目的ApplicationContext上下文環(huán)境 public class Chapter01ApplicationTests { // 自動(dòng)創(chuàng)建的單元測(cè)試方法示例 @Test public void contextLoads() { } }
文件1中,Chapter01ApplicationTests是chapter01項(xiàng)目主程序啟動(dòng)類(lèi)對(duì)應(yīng)的單元測(cè)試類(lèi),該類(lèi)自動(dòng)生成了一個(gè)單元測(cè)試方法的示例。第9行代碼的@SpringBootTest注解用于標(biāo)記該類(lèi)為測(cè)試類(lèi),并加載項(xiàng)目的ApplicationContext上下文環(huán)境;第8行代碼的@RunWith注解是一個(gè)測(cè)試類(lèi)運(yùn)行器,用于加載Spring Boot測(cè)試注解@SpringBootTest。
下面,在單元測(cè)試類(lèi)Chapter01ApplicationTests中添加HelloController類(lèi)中hello()請(qǐng)求控制方法對(duì)應(yīng)的單元測(cè)試方法,示例代碼如下。
@Autowired private HelloController helloController; @Test public void helloControllerTest() { String hello = helloController.hello(); System.out.println(hello); }
上述代碼中,先使用@Autowired注解注入了HelloController實(shí)例對(duì)象,然后在helloControllerTest()方法中調(diào)用了HelloController類(lèi)中對(duì)應(yīng)的請(qǐng)求控制方法hello(),并輸出打印結(jié)果。
選中單元測(cè)試方法helloControllerTest(),鼠標(biāo)右鍵單擊“Run ‘helloControllerTest()’”選項(xiàng)啟動(dòng)測(cè)試方法,此時(shí)控制臺(tái)的打印信息如圖1所示。
圖1 helloControllerTest()單元測(cè)試方法效果
從圖1可以看出,控制臺(tái)打印出了“hello Spring Boot”信息,說(shuō)明了控制類(lèi)HelloController中編寫(xiě)的hello()方法正確,并且單元測(cè)試方法執(zhí)行成功。
猜你喜歡:
JDK8新增的日期與時(shí)間類(lèi)有多少種?應(yīng)該怎么樣使用?
2021-07-05Java虛擬機(jī)中獲得Runtime實(shí)例的方法是什么?
2021-07-05什么是Eclipse?Eclipse簡(jiǎn)介?
2021-07-05Java中的NIO是什么?NIO的核心組成部分有哪些?
2021-07-02Java實(shí)戰(zhàn)項(xiàng)目《傳智健康》超完整的企業(yè)級(jí)醫(yī)療行業(yè)項(xiàng)目
2021-07-02InectAddress類(lèi)的常用方法,怎樣使用InetAddress類(lèi)?
2021-06-28