使用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的資料庫,會報表不存在的錯,官方文件在此:http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-test-autoconfigure/Using 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)參考資料: http://gitlab.alibaba-inc.com/middleware-container/pandora-boot/wikis/test
為什麼要加最後一個註解呢,這個要看自己的專案來定,一開始寫的是@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非同步
- 如果利用 python 對 java 程式碼進行 單元測試?PythonJava
- 使用gtest進行自己的單獨測試的程式碼介紹
- 使用CountDownLatch或迴圈屏障對多執行緒程式碼進行單元測試 -XebiaCountDownLatch執行緒
- 使用springboot對linux進行操控Spring BootLinux
- 【星雲測試】開發者測試-採用精準測試工具對SpringBoot應用進行測試Spring Boot
- 第 83 期對 Go 程式進行可靠的效能測試Go
- 使用python對oracle進行簡單效能測試PythonOracle
- 【SWINGBENCH】使用SwingBench對Oracle進行壓力測試Oracle
- 星雲精準測試對安卓底層驅動程式碼的測試案例分析安卓
- 測試前奏 之 Robotium使用Eclipse和ADT對apk進行黑盒測試EclipseAPK
- 使用Sysbench對滴滴雲MySQL進行基準測試MySql
- 使用 jMeter 對 SAP Spartacus 進行併發效能測試JMeter
- 程式碼重構與單元測試——對方法的引數進行重構(五)
- Docker中使用Xhprof 對程式碼進行效能分析Docker
- Springboot整合ElasticSearch進行簡單的測試及用Kibana進行檢視Spring BootElasticsearch
- .net core 使用ConcurrentTest元件對方法進行壓力測試元件
- 使用PostMan進行API測試PostmanAPI
- 使用 HTTPie 進行 API 測試HTTPAPI
- 使用Loadrunner進行效能測試
- 使用jMeter對基於SAP ID service進行Authentication的Restful API進行併發測試JMeterRESTAPI
- 當面試說起分層測試如何進行時......面試
- Java中各程式碼層級的關係Java
- 高階測試:如何使用Flink對Strom任務的邏輯功能進行復現測試?
- 使用網頁前端JavaScript使用RSA對長字串進行加密及測試解密,1024位可對長字串進行網頁前端JavaScript字串加密解密
- 使用JUnit進行單元測試
- 使用jest進行單元測試
- 使用 MeterSphere 進行 Dubbo 介面測試
- 使用JMeter進行壓力測試JMeter
- 使用 Sysbench 進行 Linux 效能測試Linux
- 使用Wiremock進行整合測試 - kubilayREMMock
- Springboot程式碼修改後,不需重新執行即可生效,使用Springloaded進行熱部署Spring Boot熱部署
- JMH-大廠是如何使用JMH進行Java程式碼效能測試的?必須掌握!Java
- Python中的單元測試框架:使用unittest進行有效測試Python框架
- 如何進行裝置的非對稱效能測試
- 單元測試效率優化:為什麼要對程式進行測試?測試有什麼好處?優化
- python+requests 對 app 和微信小程式進行介面測試PythonAPP微信小程式
- python+requests對app和微信小程式進行介面測試PythonAPP微信小程式