【【Java實(shí)用干貨】使用@SpringBootTest注解進(jìn)行單元測(cè)試
大家好,我是洲洲,歡迎關(guān)注,一個(gè)愛聽周杰倫的程序員。關(guān)注公眾號(hào)【程序員洲洲】即可獲得海量學(xué)習(xí)資料、面試筆記、大廠獨(dú)家學(xué)習(xí)體系路線等…還可以加入技術(shù)交流群~
前言
@SpringBootTest注解是SpringBoot自1.4.0版本開始引入的一個(gè)用于測(cè)試的注解。
本章文章主要給大家講解SpringBootTest的相關(guān)使用方法。
SpringBootTest默認(rèn)集成了以下的功能:
JUnit 5: Java單元測(cè)試框架
Spring Test & Spring Boot Test: Spring Boot的測(cè)試工具和支持
AssertJ: 流式斷言
Hamcrest: Hamcrest斷言
Mockito: Java Mock框架
JSONassert: JSON斷言
JsonPath: XPath for JSON
整體上,Spring Boot Test支持的測(cè)試種類,大致可以分為如下三類:
單元測(cè)試:一般面向方法,編寫一般業(yè)務(wù)代碼時(shí),測(cè)試成本較大。涉及到的注解有@Test。
切片測(cè)試:一般面向難于測(cè)試的邊界功能,介于單元測(cè)試和功能測(cè)試之間。涉及到的注解有 @WebMvcTest等。主要就是對(duì)于Controller的測(cè)試,分離了Service層,這里就涉及到Moc控制層所依賴的組件了
功能測(cè)試:一般面向某個(gè)完整的業(yè)務(wù)功能,同時(shí)也可以使用切面測(cè)試中的mock能力,推薦使用。涉及到的注解有@SpringBootTest等。
————————————————
1、添加Maven依賴
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2、編寫啟動(dòng)入口
@SpringBootApplication
public class StartUpApplication {
public static void main(String[] args) {
SpringApplication.run(StartUpApplication.class, args);
}
}
3、編寫Controller類
@RestController
public class HelloController {
@RequestMapping("/")
public String index() {
return "Hello Spring Boot,Index!";
}
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String test() {
return "Spring Boot Test Demo!";
}
}
4、編寫相關(guān)測(cè)試類
classes屬性指定啟動(dòng)類,SpringBootTest.WebEnvironment.RANDOM_PORT經(jīng)常和測(cè)試類中@LocalServerPort一起在注入屬性時(shí)使用。會(huì)隨機(jī)生成一個(gè)端口號(hào)。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = StartUpApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class HelloControllerTest {
/**
* @LocalServerPort 提供了 @Value("${local.server.port}") 的代替
*/
@LocalServerPort
private int port;
private URL base;
@Autowired
private TestRestTemplate restTemplate;
@Before
public void setUp() throws Exception {
String url = String.format("http://localhost:%d/", port);
System.out.println(String.format("port is : [%d]", port));
this.base = new URL(url);
}
/**
* 向"/test"地址發(fā)送請(qǐng)求,并打印返回結(jié)果
* @throws Exception
*/
@Test
public void test1() throws Exception {
ResponseEntity<String> response = this.restTemplate.getForEntity(
this.base.toString() + "/test", String.class, "");
System.out.println(String.format("測(cè)試結(jié)果為:%s", response.getBody()));
}
過程中的注意事項(xiàng)
總結(jié)
Hello,各位看官老爺們好,洲洲已經(jīng)建立了技術(shù)交流群,如果你很感興趣,可以私信我加入我的社群。
??社群中不定時(shí)會(huì)有很多活動(dòng),例如每周都會(huì)包郵免費(fèi)送一些技術(shù)書籍及精美禮品、學(xué)習(xí)資料分享、大廠面經(jīng)分享、技術(shù)討論、行業(yè)大佬創(chuàng)業(yè)雜談等等。
??社群方向很多,相關(guān)領(lǐng)域有Web全棧(前后端)、人工智能、機(jī)器學(xué)習(xí)、自媒體變現(xiàn)、前沿科技文章分享、論文精讀等等。
??不管你是多新手的小白,都?xì)g迎你加入社群中討論、聊天、分享,加速助力你成為下一個(gè)技術(shù)大佬!也隨時(shí)歡迎您跟我溝通,一起交流,一起成長(zhǎng)。變現(xiàn)、進(jìn)步、技術(shù)、資料、項(xiàng)目、你想要的這里都會(huì)有
??網(wǎng)絡(luò)的風(fēng)口只會(huì)越來越大,風(fēng)浪越大,魚越貴!歡迎您加入社群~一個(gè)人可以或許可以走的很快,但一群人將走的更遠(yuǎn)!
??關(guān)注我的公眾號(hào)(與CSDN同ID:程序員洲洲)可以獲得一份Java 10萬(wàn)字面試寶典及相關(guān)資料!~
??想都是問題,做都是答案!行動(dòng)起來吧!歡迎評(píng)論區(qū)or后臺(tái)與我溝通交流,也歡迎您點(diǎn)擊下方的鏈接直接加入到我的交流社群!~ 跳轉(zhuǎn)鏈接社區(qū)~文章來源:http://www.zghlxwxcb.cn/news/detail-445632.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-445632.html
到了這里,關(guān)于【Java實(shí)用干貨】使用@SpringBootTest注解進(jìn)行單元測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!