1. 程式人生 > >Spring Boot 初級入門教程(四) —— 程式碼測試配置(附原始碼)

Spring Boot 初級入門教程(四) —— 程式碼測試配置(附原始碼)

在專案開發中,測試環節是非常重要的,所以選擇好的程式碼測試工具也顯得尤為重要。

首先,基於前三篇的程式碼,先修改一些 Jar 包的版本,都用目前最新版本(強迫症!!!)。

junit 版本修改:3.8.1 -》 4.12

spring boot 版本修改:1.4.2.RELEASE -》 2.0.2.RELEASE

修改後 pom 檔案如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.menglanglang</groupId>
	<artifactId>test-springboot</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>test-springboot</name>
	<url>http://blog.csdn.net/tzhuwb</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>

		<!-- 該依賴包提供了MVC、AOP等的依賴包 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>

		<!-- 新增Spring Boot Devtools依賴包 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<version>2.0.2.RELEASE</version>
			<optional>true</optional>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<!-- 這是Spring Boot Devtools Plugin的配置 -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<!-- 如果沒有fork配置,可能devtools不會起作用,即不會restart -->
					<fork>true</fork>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<!-- Add Spring repositories -->
	<!-- (you don't need this if you are using a .RELEASE version) -->
	<repositories>
		<repository>
			<id>spring-snapshots</id>
			<url>http://repo.spring.io/snapshot</url>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
		<repository>
			<id>spring-milestones</id>
			<url>http://repo.spring.io/milestone</url>
		</repository>
	</repositories>
	<pluginRepositories>
		<pluginRepository>
			<id>spring-snapshots</id>
			<url>http://repo.spring.io/snapshot</url>
		</pluginRepository>
		<pluginRepository>
			<id>spring-milestones</id>
			<url>http://repo.spring.io/milestone</url>
		</pluginRepository>
	</pluginRepositories>
</project>

一、使用 Junit 測試方法

建立 controller 包,並建立 TestController.java 測試類,程式碼如下:

package com.menglanglang.test.springboot.controller;

import org.junit.Test;
import org.springframework.web.bind.annotation.RestController;

/**
 * @desc Controller測試類
 *
 * @author 孟郎郎
 * @blog http://blog.csdn.net/tzhuwb
 * @version 1.0
 * @date 2018年5月26日上午8:14:53
 */
@RestController
public class TestController {

	@Test
	public void test() {
		System.out.println("測試方法test()");
	}

}

右鍵 -》Run as -》 JUnit Test。

在控制檯檢視結果,輸出為:

測試方法test()

二、新增 spring-boot-starter-test 依賴包

在 pom 中新增依賴包,程式碼如下:

		<!-- 新增 Spring Boot 測試依賴包 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<version>2.0.2.RELEASE</version>
			<scope>test</scope>
		</dependency>

三、修改測試類 TestController.java

修改原測試類,新增 Spring Boot 註解,支援測試。

package com.menglanglang.test.springboot.controller;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.bind.annotation.RestController;

/**
 * @desc Controller測試類
 *
 * @author 孟郎郎
 * @blog http://blog.csdn.net/tzhuwb
 * @version 1.0
 * @date 2018年5月26日上午8:14:53
 */
@RestController
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestController {

	@Test
	public void test() {
		System.out.println("測試方法test()");
	}

}

在控制檯檢視結果,輸出為:

10:47:22,789 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
10:47:22,789 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
10:47:22,789 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/D:/workspace/workspace-sts-3.9.4.RELEASE-x86/test-springboot/target/classes/logback.xml]
10:47:22,842 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
10:47:22,842 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
10:47:22,848 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
10:47:22,854 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
10:47:22,897 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
10:47:22,900 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [baselog]
10:47:22,908 |-INFO in [email protected] - No compression will be used
10:47:22,909 |-INFO in [email protected] - Will use the pattern log/base.log.%d.%i for the active file
10:47:22,911 |-INFO in [email protected] - The date pattern is 'yyyy-MM-dd' from file name pattern 'log/base.log.%d.%i'.
10:47:22,912 |-INFO in [email protected] - Roll-over at midnight.
10:47:22,916 |-INFO in [email protected] - Setting initial period to Sat May 26 10:47:06 CST 2018
10:47:22,916 |-WARN in [email protected] - SizeAndTimeBasedFNATP is deprecated. Use SizeAndTimeBasedRollingPolicy instead
10:47:22,916 |-WARN in [email protected] - For more information see http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedRollingPolicy
10:47:22,918 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
10:47:22,920 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[baselog] - Active log file name: log/base.log
10:47:22,920 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[baselog] - File property is set to [log/base.log]
10:47:22,921 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
10:47:22,921 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
10:47:22,922 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.menglanglang.test.springboot] to DEBUG
10:47:22,922 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [baselog] to Logger[com.menglanglang.test.springboot]
10:47:22,922 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
10:47:22,922 |-INFO in [email protected] - Registering current configuration as safe fallback point

2018-05-26 10:47:23,057 INFO (AbstractTestContextBootstrapper.java:308)- Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.menglanglang.test.springboot.controller.TestController], using SpringBootContextLoader
2018-05-26 10:47:23,063 INFO (AbstractContextLoader.java:264)- Could not detect default resource locations for test class [com.menglanglang.test.springboot.controller.TestController]: no resource found for suffixes {-context.xml, Context.groovy}.
2018-05-26 10:47:23,064 INFO (AnnotationConfigContextLoaderUtils.java:83)- Could not detect default configuration classes for test class [com.menglanglang.test.springboot.controller.TestController]: TestController does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
2018-05-26 10:47:23,186 INFO (SpringBootTestContextBootstrapper.java:244)- Found @SpringBootConfiguration com.menglanglang.test.springboot.App for test class com.menglanglang.test.springboot.controller.TestController
2018-05-26 10:47:23,311 INFO (AbstractTestContextBootstrapper.java:248)- Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
2018-05-26 10:47:23,325 INFO (AbstractTestContextBootstrapper.java:177)- Using TestExecutionListeners: [or[email protected]1f9b85e, org.springframework.test[email protected]4e1977, org.spri[email protected]d68fcd, org.springframework.boot.test.a[email protected]17e949d, org.springfra[email protected]1b9f5a4, org.springf[email protected]18edcc5, org.springframework[email protected]102881e, org.springframework.boot.test.autoconfi[email protected]bd319f, org.springframework.boot.test.autoconfi[email protected]be339, org.springframework.boo[email protected]1ca7889]

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.2.RELEASE)

2018-05-26 10:47:23,610 INFO (StartupInfoLogger.java:50)- Starting TestController on LangLang-PC with PID 7800 (started by LangLang in D:\workspace\workspace-sts-3.9.4.RELEASE-x86\test-springboot)
2018-05-26 10:47:23,611 DEBUG (StartupInfoLogger.java:53)- Running with Spring Boot v2.0.2.RELEASE, Spring v5.0.6.RELEASE
2018-05-26 10:47:23,613 INFO (SpringApplication.java:659)- No active profile set, falling back to default profiles: default
2018-05-26 10:47:23,649 INFO (AbstractApplicationContext.java:590)- Refreshing org.s[email protected]519cb4: startup date [Sat May 26 10:47:23 CST 2018]; root of context hierarchy
2018-05-26 10:47:24,671 INFO (AbstractUrlHandlerMapping.java:373)- Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-26 10:47:24,873 INFO (RequestMappingHandlerAdapter.java:574)- Looking for @ControllerAdvice: org.s[email protected]519cb4: startup date [Sat May 26 10:47:23 CST 2018]; root of context hierarchy
2018-05-26 10:47:24,974 INFO (AbstractHandlerMethodMapping.java:547)- Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-05-26 10:47:24,977 INFO (AbstractHandlerMethodMapping.java:547)- Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-05-26 10:47:25,000 INFO (AbstractUrlHandlerMapping.java:373)- Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-26 10:47:25,000 INFO (AbstractUrlHandlerMapping.java:373)- Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-26 10:47:25,397 INFO (StartupInfoLogger.java:59)- Started TestController in 2.021 seconds (JVM running for 2.908)
測試方法test()
2018-05-26 10:47:25,492 INFO (AbstractApplicationContext.java:993)- Closing org.s[email protected]519cb4: startup date [Sat May 26 10:47:23 CST 2018]; root of context hierarchy

到此,Spring Boot 測試支援新增完畢。

相關推薦

Spring Boot 初級入門教程 —— 配置 MySQL 資料庫和使用 JdbcTemplate 測試

經過前面幾篇文章,包已經可以打了,不管是 jar 包還是 war 包都已測試通過,jsp 頁面也可以訪問了,但頁面上的資料都是在配置檔案中寫死的,不爽 ~ 到目前為止,最重要的配置還沒做,那就是連資料庫,這篇就主要說一下如何配置 MySQL 資料庫。 一、引入依賴的 jar 包 檢視

Spring Boot 初級入門教程 —— 程式碼測試配置原始碼

在專案開發中,測試環節是非常重要的,所以選擇好的程式碼測試工具也顯得尤為重要。 首先,基於前三篇的程式碼,先修改一些 Jar 包的版本,都用目前最新版本(強迫症!!!)。 junit 版本修改:3.8.1 -》 4.12 spring boot 版本修改:1.4.2.R

Spring Boot 初級入門教程十八 —— 整合 MyBatis 另外一種開發方式

在前面兩篇文章《Spring Boot 初級入門教程(十五) —— 整合 MyBatis》和《Spring Boot 初級入門教程(十七) —— 通過 Oracle 資料庫測試已整合 MyBatis(附原始碼)》中,介紹瞭如何在 SpringBoot 中整合 MyBatis 以及通過 MySQL

Spring Boot 初級入門教程十七 —— 通過 Oracle 資料庫測試已整合 MyBatis原始碼

在文章《Spring Boot 初級入門教程(十五) —— 整合 MyBatis》中,已經對 MyBatis 進行了整合,只是當時是連 MySQL 資料庫進行的測試。這一篇簡單通過 Oracle 資料庫進行測試,確保整合的 MyBatis 在連線 Oracle 資料庫時也是有效的。 一、新增

Spring Boot 初級入門教程十六 —— 配置 Oracle 資料庫和使用 MyBatis 測試

日常專案開發除了 MySQL 資料庫之外,用的最多的還有 Oracle 資料庫,所以這邊來說說如何在專案中配置 Oracle 資料庫,並測試是否配置成功。 一、引入依賴的 jar 包 檢視 pom.xml 檔案中是否引入了 ojdbc 的 jar 包,如果沒有引用,則需要引用才

Spring Boot 初級入門教程十五 —— 整合 MyBatis

基於上篇文章,這篇主要說下如何整合 MyBatis,這樣測試時也不用在像 JdbcTemplate 那樣在 java 程式碼中寫 sql 語句了。 一、新增 MyBatis 依賴包 在 pom 檔案中,新增支援 MyBatis 的依賴包,如下: <!-- myba

Spring Boot 初級入門教程十三 —— 打完整 war 包、部署和測試原始碼

前面幾篇文章介紹瞭如何打 jar 包並如何在伺服器環境上測試,那麼這篇就說說如何打 war 包並在 tomcat 伺服器上部署測試。 畢竟在開發過程中,很多專案都是 web 專案,最熟悉的還是直接部署在 tomcat 伺服器中執行,本地開發也是在 IDE 開發環境配置伺服器,併發布執行。只不

Spring Boot 初級入門教程十二 —— 執行、測試、打包過程中碰到的各種錯誤

錯誤一:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project test-springboot: Compilation fail

Spring Boot 初級入門教程十一 —— 打分離 jar 包、部署和測試原始碼

分離 jar 包,也就是把工程原始碼打包到 *.jar,而把工程依賴的所有 lib 單獨生成,這樣打包的好處是,在依賴包沒有修改的情況下,部署時只需要上傳一次依賴包,每次部署的專案 jar 包很小,在伺服器網路不太好的情況下,這樣做是非常有必要的,因為上傳 20M 和 上傳 20K 的時間還是有

Spring Boot 初級入門教程 —— 打完整 jar 包、部署和測試

不知不覺都第十篇了,用了這麼久,都是在本機執行,localhost 還是不爽,加上目前 jsp 頁面已配置,可以做幾個炫一些的頁面,掛伺服器上試試。那麼問題來了,如何打包、部署呢?接下來開始嘗試打包,Spirng Boot 預設配置是 jar 包,那首先來嘗試一下 jar 包的打包、部署和測試。

Spring Boot 初級入門教程 —— 新增 JSP 支援

大多數 WEB 開發,都還是用的 JSP 頁面,所以如何讓 SpringBoot 專案支援 JSP,這篇簡單說一下。 一、需要引入依賴的 jar 包。 檢視 pom.xml 檔案中是否引入下面的 jar 包,如果沒有引用,則需要引用才行。 <!-- 該依賴包提供了MVC、A

Spring Boot 初級入門教程 —— 工作臺列印彩色日誌

這篇簡單說下工作臺日誌的彩色渲染效果,因為預設工作臺列印的日誌都統一為灰色,視覺效果不是很好,如下: 但添加了彩色樣式後,看起來舒服多了,效果如下: 修改配置很簡單,如下: <?xml version="1.0" encoding="UTF-8"?> <

Spring Boot 初級入門教程 —— 日誌分類備份

在上一篇《Spring Boot 初級入門教程(二) —— 日誌備份》中,只是簡單說明了下日誌的備份方法,並沒有做更多的配置說明,這篇主要說一下如何分類備份不同的日誌。 一、修改日誌配置檔案的檔名。 上篇中,建立的日誌檔名為 logback.xml,開始配置前,想把檔名修改一下

Spring Boot 初級入門教程 —— 新增配置檔案 *.properties 及常用配置的使用原始碼

Spring Boot 使用了一個全域性的配置檔案 application.properties,放在 src/main/resources 目錄下或者類路徑的 /config 下。Sping Boot的全域性配置檔案的作用是對一些預設配置的配置值進行修改。 一、新增 applic

Spring Boot入門教程(五十一): JSON Web TokenJWT

一:認證 在瞭解JWT之前先來回顧一下傳統session認證和基於token認證。 1.1 傳統session認證 http協議是一種無狀態協議,即瀏覽器傳送請求到伺服器,伺服器是不知道這個請求是哪個使用者發來的。為了讓伺服器知道請求是哪個使用者發來的,需要讓使用者提供

Spring Boot快速入門:使用jpa進行資料庫操作

新增依賴 新建專案選擇web,JPA,MySQL三個依賴 對於已存在的專案可以在bulid.gradle加入,spring boot將會幫你自動配置好 compile('org.springframework.boot:spring-boot-starter

spring cloud快速入門教程路由閘道器Zuul

現在服務也統一註冊管理了,配置也統一管理了,我們就可以瘋狂的開發各項微服務了,是不是還覺得少了點什麼?前端怎麼訪問到相應服務?這就用到路由網關了。 路由閘道器就是整個微服務的統一入口,看看第一張的架構圖,專案的前端做成了動靜分離,靜態檔案、html頁面、css檔案和js檔案

Spring Boot 2 快速教程:WebFlux 快速入門

摘要: 原創出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關注和轉載,保留摘要,

Spring Boot 2 快速教程:WebFlux 整合 Mongodb

摘要: 原創出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關注和轉載,保留摘要,謝謝! 這是泥瓦匠的第104篇原創 文章工程:* JDK 1.8* Maven 3.5.2* Spring Boot 2.1.3.RELEASE* 工程名:springboot

Spring Boot快速入門:使用MyBatis註解形式進行數據庫操作

訪問 ins name ont clas assert xxx main apach 原文地址:https://lierabbit.cn/articles/7 添加依賴 新建項目選擇web,MyBatis,MySQL三個依賴 對於已存在的項目可以在bulid.gradle