使用springboot對各層的程式碼進行測試!
因為近段時間在一個系統,後端程式碼使用的技術棧是spring boot (版本1.5.12.RELEASE)、alibaba-spring-boot (版本1.5.12.0-SNAPSHOT)、pandora-boot (版本2018-05-release),寫好各種mapper、service、controller層的程式碼之後免不了要進行測試,最高效的測試方法還是寫單元測試,如果自己在本地把服務起來,頁面上點點點,那是極其low極力不推薦的!
下面就介紹一下各個層的測試基類的寫法:
pom依賴如下:
一、mapper層的測試
測試基類如下:
說明:1、使用@MybatisTest,如果不加註解@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE),那麼mybatis使用的是記憶體資料庫,並不是真實的tddl的資料庫,會報表不存在的錯,官方文件在此: a real databaseThe In-memory embedded databases generally work well for tests since they are fast and don’t require any developer installation. However if you prefer to run tests against a real database, you can use the @AutoConfigureTestDatabase as follow:2、@Rollback(false) 單測完成預設會將資料回滾,如果不想回滾,想保留在資料庫中,要加(false)。
二、service層的測試
測試基類如下:
說明:在做service層的測試的時候,還是遇到一些問題,網上各種搜資料,很多例子在進行service層的測試時將dao層進行了mock的辦法,但我並不想mock,經過一頓勇猛猜測,最後終於跑通了。比起mapper層的測試,多了這麼幾個註解:@RunWith(PandoraBootRunner.class)@DelegateTo(SpringJUnit4ClassRunner.class)@SpringBootTest(classes = TestConfiguration.class)參考資料:
為什麼要加最後一個註解呢,這個要看自己的專案來定,一開始寫的是@SpringBootTest(classes = Application.class),發現執行測試的時候總有一些service無法注入,報錯: No qualifying bean of type 'xxx' available。後來按照網上的解決辦法,自己寫了個TestConfiguration,程式碼如下:
具體的原因等空了還需要再推敲一下,遇到問題不能僅僅靠猜。
三、controller層的測試:
基類如下:
一般在程式controller層測試的時候,會將service層進行mock,我介紹2種寫法,分別是mock的方法和不mock的方法:1、不mock的方法:
2、mock的方法:
注意:一開始跑controller層測試的時候,response 總是404,後來發現一定要加上 @EnableWebMvc註解,問題解決。
好了,測試跑通,現在感覺想怎麼測,就怎麼測。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2156156/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用FakeAsync對Angular非同步程式碼進行單元測試Angular非同步
- 【星雲測試】開發者測試-採用精準測試工具對SpringBoot應用進行測試Spring Boot
- 如果利用 python 對 java 程式碼進行 單元測試?PythonJava
- 用 Mocha 和 Chai 對 JavaScript 程式碼進行單元測試AIJavaScript
- 使用ab對nginx進行壓力測試Nginx
- 使用gtest進行自己的單獨測試的程式碼介紹
- 星雲精準測試對安卓底層驅動程式碼的測試案例分析安卓
- 使用CountDownLatch或迴圈屏障對多執行緒程式碼進行單元測試 -XebiaCountDownLatch執行緒
- 第 83 期對 Go 程式進行可靠的效能測試Go
- 使用acorn對JavaScript程式碼進行解析。JavaScript
- 利用Python中的mock庫對Python程式碼進行模擬測試PythonMock
- 使用Sysbench對滴滴雲MySQL進行基準測試MySql
- 使用python對oracle進行簡單效能測試PythonOracle
- 使用Jest對原生TypeScript專案進行UI測試TypeScriptUI
- 使用tpcc-mysql對mysql進行TPCC效能測試MySql
- 使用 Bash shell 指令碼進行功能測試(轉)指令碼
- 使用 HTTPie 進行 API 測試HTTPAPI
- 使用PostMan進行API測試PostmanAPI
- 程式碼重構與單元測試——對方法的引數進行重構(五)
- 測試前奏 之 Robotium使用Eclipse和ADT對apk進行黑盒測試EclipseAPK
- 使用jMeter對基於SAP ID service進行Authentication的Restful API進行併發測試JMeterRESTAPI
- 使用springboot對linux進行操控Spring BootLinux
- 使用console進行效能測試和計算程式碼執行時間
- 使用 MeterSphere 進行 Dubbo 介面測試
- 使用JUnit進行單元測試
- 使用Wiremock進行整合測試 - kubilayREMMock
- 使用Jmeter進行http介面測試JMeterHTTP
- 【java】使用jprofiler進行效能測試Java
- .net core 使用ConcurrentTest元件對方法進行壓力測試元件
- Docker中使用Xhprof 對程式碼進行效能分析Docker
- [譯]對 React 元件進行單元測試React元件
- 如何對你Mac進行壓力測試?Mac
- 用mysqlslap對MySQL進行壓力測試MySql
- 高階測試:如何使用Flink對Strom任務的邏輯功能進行復現測試?
- 單元測試效率優化:為什麼要對程式進行測試?測試有什麼好處?優化
- 使用xUnit為.net core程式進行單元測試(4)
- 使用xUnit為.net core程式進行單元測試(3)
- 使用xUnit為.net core程式進行單元測試 -- Assert