通常咱們在寫完代碼以後,代碼的測試是會給專門的測試人員來測試的,若是一個測試跑到你的工位上對你說,你的代碼好像有Bug,你確定會不爽,反正我就是這樣的🙃。因此爲了顯示本身的代碼質量高一點,在功能提交給測試以前,咱們會本身測試一下,接下來給你們介紹一下 Spring Boot Test 應用測試框架。java
Spring Boot Test 其實就是Spring Test,只是在Spring Boot 中集成變得更簡單了,像咱們開發本身測試,通常都是單元測試Junit測試,不出bug就謝天謝地啦,Spring Test與JUnit結合起來提供了高效便捷的測試解決方案,而Spring Boot Test是在Spring Test之上增長了切片測試並加強了Mock能力。mysql
Spring Boot Test支持的測試種類,主要分爲如下三類:git
單元測試,面向方法的測試,經常使用註解有@Test。(通常都是用這個)github
功能測試,面向業務的測試,同時也可使用切面測試中的Mock能力,經常使用的註解有@RunWith,@SpringBootTest等。(這個也用得多)web
切片測試,面向難於測試的邊界功能,介於單元測試和功能測試之間,經常使用註解有@RunWith,@WebMvcTest等。spring
測試過程當中的關鍵要素及支撐方式以下:sql
接下來我帶領你們學習如何簡單使用Spring Boot Test框架。數據庫
在Spring Boot中開啓測試只須要引入spring-boot-starter-test依賴,使用@RunWith和@SpringBootTest註解就能夠開始測試。咱們就簡單測試一下接口,首先咱們引入pom依賴:apache
pom.xml
:springboot
<!--springboot父工程--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <!--springboot框架web組件--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.2.RELEASE</version> </dependency> <!--mybatis整合springboot組件--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <!--mysql數據庫鏈接驅動--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> </dependency> <!--lombok組件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency> <!--spring boot-test組件--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> </dependency> <!--單元測試junit組件--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!--spring-test組件--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.2.2.RELEASE</version> <scope>test</scope> </dependency> </dependencies> <build> <!--springboot的maven插件--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArgs> <arg>-parameters</arg> </compilerArgs> </configuration> </plugin> </plugins> </build>
2.2 代碼編寫
測試代碼咱們通常都寫在與main文件夾平級的test文件夾下,建議文件夾的名稱和main文件夾下的文件夾對應好,測試類的名稱也要對應好,就像下面這樣,固然這只是建議。
Spring Boot 的啓動類我就再也不寫了,沒有加什麼特別的內容,直接上測試類吧。
StudentServiceTest.java
:
對了,這裏測試的每個方法都和StudentService.java
這個服務類的方法名對應着的,建議你們也是這樣。
package com.butterflytri.service; import com.butterflytri.TestApplication; import com.butterflytri.entity.Student; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; import java.util.List; /** * @author: WJF * @date: 2020/5/23 * @description: StudentServiceTest */ /** * {@link SpringBootTest}:配置文件屬性的讀取。讀取classes標誌的啓動類的配置文件和運行環境,並加載。 * {@link RunWith}:'RunWith'註解就是一個運行器,加載value的Class測試環境。 */ @SpringBootTest(classes = TestApplication.class) @RunWith(SpringRunner.class) public class StudentServiceTest { @Resource private StudentService studentService; @Test public void findAllTest() { List<Student> list = studentService.findAll(); for (Student student : list) { System.out.println(student); } } @Test public void findOneTest() { Student student = studentService.findOne(1L); System.out.println(student); } @Test public void findByStudentNoTest() { Student student = studentService.findByStudentNo("G030511"); System.out.println(student); } }
每個測試方法都是能夠獨立運行的,由於在運行的時候會加載Spring Test的測試環境,同時會將你測試的工程的運行環境的配置加載進來,使用的都是工程的配置和環境,方便咱們本身進行測試。
本項目傳送門:spring-boot-test
此教程會一直更新下去,以爲博主寫的能夠的話,關注一下,也能夠更方便下次來學習。