### 1.4 單元測試與熱部署
**(1)單元測試**
?? ? ? ?? 開發(fā)中匠楚,每當(dāng)完成一個(gè)功能接口或業(yè)務(wù)方法的編寫后叶沛,通常都會(huì)借助單元測試驗(yàn)證該功能是否正確荔棉。Spring Boot對(duì)項(xiàng)目的單元測試提供了很好的支持濒募,在使用時(shí)坪郭,需要提前在項(xiàng)目的pom.xml文件中添加spring-boot-starter-test測試依賴啟動(dòng)器吭产,可以通過相關(guān)注解實(shí)現(xiàn)單元測試
演示:
1.添加spring-boot-starter-test測試依賴啟動(dòng)器
在項(xiàng)目的pom.xml文件中添加spring-boot-starter-test測試依賴啟動(dòng)器侣监,示例代碼如下 :
```xml
<dependency>
? ? ?? <groupId>org.springframework.boot</groupId>
? ? ?? <artifactId>spring-boot-starter-test</artifactId>
? ? ?? <scope>test</scope>
</dependency>
```
注意:使用Spring Initializr方式搭建的Spring Boot項(xiàng)目,會(huì)自動(dòng)加入spring-boot-starter-test測試依賴啟動(dòng)器臣淤,無需再手動(dòng)添加
2.編寫單元測試類和測試方法
使用Spring Initializr方式搭建的Spring Boot項(xiàng)目橄霉,會(huì)在src.test.java測試目錄下自動(dòng)創(chuàng)建與項(xiàng)目主程序啟動(dòng)類對(duì)應(yīng)的單元測試類
```java
@RunWith(SpringRunner.class) // 測試啟動(dòng)器,并加載Spring Boot測試注解
@SpringBootTest? // 標(biāo)記為Spring Boot單元測試類邑蒋,并加載項(xiàng)目的ApplicationContext上下文環(huán)境
class SpringbootDemoApplicationTests {
?? @Autowired
?? private DemoController demoController;
?? // 自動(dòng)創(chuàng)建的單元測試方法實(shí)例
?? @Test
?? void contextLoads() {
? ? ? String demo = demoController.demo();
? ? ? System.out.println(demo);
?? }
}
```
?? ? ? ?? 上述代碼中姓蜂,先使用@Autowired注解注入了DemoController實(shí)例對(duì)象,然后在contextLoads()方法中調(diào)用了DemoController類中對(duì)應(yīng)的請(qǐng)求控制方法contextLoads()医吊,并輸出打印結(jié)果
**(2)熱部署**
?? ? ? ?? 在開發(fā)過程中钱慢,通常會(huì)對(duì)一段業(yè)務(wù)代碼不斷地修改測試,在修改之后往往需要重啟服務(wù)卿堂,有些服務(wù)需要加載很久才能啟動(dòng)成功束莫,這種不必要的重復(fù)操作極大的降低了程序開發(fā)效率。為此草描,Spring Boot框架專門提供了進(jìn)行熱部署的依賴啟動(dòng)器览绿,用于進(jìn)行項(xiàng)目熱部署,而無需手動(dòng)重啟項(xiàng)目
演示:
**1.添加spring-boot-devtools熱部署依賴啟動(dòng)器**
在Spring Boot項(xiàng)目進(jìn)行熱部署測試之前穗慕,需要先在項(xiàng)目的pom.xml文件中添加spring-boot-devtools熱部署依賴啟動(dòng)器:
```xml
<!-- 引入熱部署依賴 -->
<dependency>
?? <groupId>org.springframework.boot</groupId>
?? <artifactId>spring-boot-devtools</artifactId>
</dependency>
```
?? ? ? ?? 由于使用的是IDEA開發(fā)工具饿敲,添加熱部署依賴后可能沒有任何效果,接下來還需要針對(duì)IDEA開發(fā)工具進(jìn)行熱部署相關(guān)的功能設(shè)置
**2. IDEA工具熱部署設(shè)置**
?? ? ? ?? 選擇IDEA工具界面的【File】->【Settings】選項(xiàng)逛绵,打開Compiler面板設(shè)置頁面
?? ? ? ?? 選擇Build下的Compiler選項(xiàng)怀各,在右側(cè)勾選“Build project automatically”選項(xiàng)將項(xiàng)目設(shè)置為自動(dòng)編譯,單擊【Apply】→【OK】按鈕保存設(shè)置
?? ? ? ?? 在項(xiàng)目任意頁面中使用組合快捷鍵“Ctrl+Shift+Alt+/”打開Maintenance選項(xiàng)框术浪,選中并打開Registry頁面瓢对,具體如圖1-17所示
?? ? ? ?? 列表中找到“compiler.automake.allow.when.app.running”,將該選項(xiàng)后的Value值勾選添吗,用于指定IDEA工具在程序運(yùn)行過程中自動(dòng)編譯,最后單擊【Close】按鈕完成設(shè)置
3.熱部署效果測試
啟動(dòng)chapter01http://localhost:8080/hello
頁面原始輸出的內(nèi)容是“hello Spring Boot”份名。
為了測試配置的熱部署是否有效碟联,接下來妓美,在不關(guān)閉當(dāng)前項(xiàng)目的情況下,將DemoController 類中的請(qǐng)求處理方法hello()的返回值修改為“你好鲤孵,Spring Boot”并保存壶栋,查看控制臺(tái)信息會(huì)發(fā)現(xiàn)項(xiàng)目能夠自動(dòng)構(gòu)建和編譯,說明項(xiàng)目熱部署生效
可以看出普监,瀏覽器輸出了“你好贵试,Spring Boot”,說明項(xiàng)目熱部署配置成功 .
***上了拉勾教育的《Java工程師高薪訓(xùn)練營》凯正,做一下筆記毙玻。希望拉勾能給我推到想去的公司,目標(biāo):字節(jié)@壬ⅰ桑滩!***