更新時間:2021-07-05 來源:黑馬程序員 瀏覽量:
在實際開發中,每當完成一個功能接口或業務方法的編寫后,通常都會借助單元測試驗證該功能是否正確。Spring Boot對項目的單元測試提供了很好的支持,在使用時,需要提前在項目的pom.xml文件中添加spring-boot-starter-test測試依賴啟動器,可以通過相關注解實現單元測試。這里,以之前創建的chapter01項目為例對Spring Boot項目的單元測試進行使用演示,具體步驟如下。
1.添加spring-boot-starter-test測試依賴啟動器
在項目的pom.xml文件中添加spring-boot-starter-test測試依賴啟動器,示例代碼如下。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>上述代碼中,展示了Spring Boot框架集成單元測試提供的依賴啟動器,其<scope>范圍默認為test。需要說明的是,如果是使用Spring Initializr方式搭建的Spring Boot項目,會自動加入spring-boot-starter-test測試依賴啟動器,無需開發者再手動添加。
2.編寫單元測試類和測試方法
在項目中添加測試依賴啟動器后,可以編寫Spring Boot項目中相關方法對應的單元測試。如果是使用Spring Initializr方式搭建的Spring Boot項目,會在src.test.java測試目錄下自動創建與項目主程序啟動類對應的單元測試類。例如,chapter01項目的Chapter01ApplicationTests是自動生成的單元測試類,內容如文件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方式自動創建的主程序啟動類對應的單元測試類 */ @RunWith(SpringRunner.class) // 測試啟動器,并加載Spring Boot測試注解 @SpringBootTest // 標記為Spring Boot單元測試類,并加載項目的ApplicationContext上下文環境 public class Chapter01ApplicationTests { // 自動創建的單元測試方法示例 @Test public void contextLoads() { } }
文件1中,Chapter01ApplicationTests是chapter01項目主程序啟動類對應的單元測試類,該類自動生成了一個單元測試方法的示例。第9行代碼的@SpringBootTest注解用于標記該類為測試類,并加載項目的ApplicationContext上下文環境;第8行代碼的@RunWith注解是一個測試類運行器,用于加載Spring Boot測試注解@SpringBootTest。
下面,在單元測試類Chapter01ApplicationTests中添加HelloController類中hello()請求控制方法對應的單元測試方法,示例代碼如下。
@Autowired private HelloController helloController; @Test public void helloControllerTest() { String hello = helloController.hello(); System.out.println(hello); }
上述代碼中,先使用@Autowired注解注入了HelloController實例對象,然后在helloControllerTest()方法中調用了HelloController類中對應的請求控制方法hello(),并輸出打印結果。
選中單元測試方法helloControllerTest(),鼠標右鍵單擊“Run ‘helloControllerTest()’”選項啟動測試方法,此時控制臺的打印信息如圖1所示。
圖1 helloControllerTest()單元測試方法效果
從圖1可以看出,控制臺打印出了“hello Spring Boot”信息,說明了控制類HelloController中編寫的hello()方法正確,并且單元測試方法執行成功。
猜你喜歡: