摘要:新建計(jì)量單位類別測(cè)試保存這里我們調(diào)用了方法,但是并沒(méi)有提示我們需要捕獲異常,但是并不代表這個(gè)方法不拋出異常,可以拋出非檢查的或其派生的異常。基礎(chǔ)測(cè)試數(shù)據(jù)準(zhǔn)備測(cè)試保存,期待拋出異常斷言捕獲異常為真運(yùn)行測(cè)試,通過(guò)。
白盒測(cè)試
白盒測(cè)試,要求對(duì)代碼中的每行代碼至少覆蓋一次。
@ApiModelProperty("學(xué)科類別") @ManyToOne // 設(shè)置學(xué)科類別字段不能為空 @JoinColumn(nullable = false) @JsonView({NoneJsonView.class, MeasurementUnitCategoryJsonView.getAllByDisciplineId.class}) private Discipline discipline;錯(cuò)誤信息測(cè)試
以之前對(duì)學(xué)科設(shè)置不為空為例,我們需要測(cè)試兩種情況,為空時(shí)的異常和不為空時(shí)保存正常。
@Test public void saveTest() { logger.debug("新建計(jì)量單位類別"); MeasurementUnitCategory measurementUnitCategory = new MeasurementUnitCategory(); logger.debug("測(cè)試保存"); measurementUnitCategoryService.save(measurementUnitCategory); }
這里我們調(diào)用了save方法,但是IDE并沒(méi)有提示我們需要捕獲異常,但是并不代表這個(gè)save方法不拋出異常,可以拋出非檢查的RuntimeException或其派生的異常。
為了測(cè)試這個(gè)異常,我們首先運(yùn)行這行代碼,看看出現(xiàn)什么異常。
異常拋出org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement Caused by: org.h2.jdbc.JdbcSQLException: NULL not allowed for column "DISCIPLINE_ID"; SQL statement: insert into measurement_unit_category (id, discipline_id, is_asc) values (null, ?, ?) [23502-194]
我們看到有三個(gè)異常,先是插入這條記錄時(shí)的JdbcSQLException,然后該異常引起了ConstraintViolationException,新異常又引起了DataIntegrityViolationException。
當(dāng)?shù)讓訏伋隽艘粋€(gè)JdbcSQLException,然后調(diào)用它的Hibernate就catch了這個(gè)異常,并用該異常構(gòu)建了一個(gè)新的異常ConstraintViolationException(限制違反異常),然后再向上層拋出,再到上層Spring捕獲,構(gòu)建新異常DataIntegrityViolationException并拋給了我們,我們沒(méi)有處理,然后控制臺(tái)就報(bào)錯(cuò)了。
捕獲異常好了,我們這里需要捕獲的異常就是Spring拋給我們的DataIntegrityViolationException異常。
@Test public void saveTest() { logger.debug("基礎(chǔ)測(cè)試數(shù)據(jù)準(zhǔn)備"); MeasurementUnitCategory measurementUnitCategory = new MeasurementUnitCategory(); Boolean catchException = false; logger.debug("測(cè)試保存,期待拋出異常"); try { measurementUnitCategoryService.save(measurementUnitCategory); } catch (DataIntegrityViolationException e) { catchException = true; } logger.debug("斷言捕獲異常為真"); assertThat(catchException).isTrue(); }
運(yùn)行測(cè)試,通過(guò)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/69678.html
摘要:熱加載代表的是我們不需要重啟服務(wù)器,就能夠類檢測(cè)得到,重新生成類的字節(jié)碼文件無(wú)論是熱部署或者是熱加載都是基于類加載器來(lái)完成的。驗(yàn)證階段字節(jié)碼文件不會(huì)對(duì)造成危害準(zhǔn)備階段是會(huì)賦初始值,并不是程序中的值。 一、SpringBoot入門 今天在慕課網(wǎng)中看見(jiàn)了Spring Boot這么一個(gè)教程,這個(gè)Spring Boot作為JavaWeb的學(xué)習(xí)者肯定至少會(huì)聽(tīng)過(guò),但我是不知道他是什么玩意。 只是大...
摘要:請(qǐng)注意,我們?cè)诹牧膯卧獪y(cè)試遇到問(wèn)題多思考多查閱多驗(yàn)證,方能有所得,再勤快點(diǎn)樂(lè)于分享,才能寫(xiě)出好文章。單元測(cè)試是指對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證。 JAVA容器-自問(wèn)自答學(xué)HashMap 這次我和大家一起學(xué)習(xí)HashMap,HashMap我們?cè)诠ぷ髦薪?jīng)常會(huì)使用,而且面試中也很頻繁會(huì)問(wèn)到,因?yàn)樗锩嫣N(yùn)含著很多知識(shí)點(diǎn),可以很好的考察個(gè)人基礎(chǔ)。但一個(gè)這么重要的東西,我為什么沒(méi)有在一開(kāi)始...
摘要:介紹什么是在軟件業(yè),為的縮寫(xiě),意為面向切面編程,通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。切面是切入點(diǎn)和通知引介的結(jié)合。切面類權(quán)限校驗(yàn)。。。 1. AOP 1.1 AOP介紹 1.1.1 什么是AOP 在軟件業(yè),AOP為Aspect Oriented Programming的縮寫(xiě),意為:面向切面編程,通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)...
摘要:在上面打開(kāi)一個(gè)微服務(wù)某個(gè)實(shí)例的一個(gè)路徑的斷路器之后,我們調(diào)用其他的路徑,無(wú)論多少次,都成功并且調(diào)用負(fù)載均衡器獲取服務(wù)實(shí)例的次數(shù)等于調(diào)用次數(shù),代表沒(méi)有重試,也就是沒(méi)有斷路器異常。 本系列代碼地址:??https://github.com/JoJoTec/spring-cloud-parent??我們來(lái)測(cè)試下前面封裝好的 We...
摘要:但是,一個(gè)好的單元測(cè)試應(yīng)該是毫秒級(jí)的,否則這會(huì)影響的工作方式,這也就是測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的思想。在單元測(cè)試中,我們可以像這樣來(lái)構(gòu)建一個(gè)實(shí)例。所以,我們?cè)趯?xiě)單元測(cè)試的時(shí)候,應(yīng)該以一種更簡(jiǎn)單的方式去構(gòu)建。 本文翻譯自:https://reflectoring.io/unit-...原文作者:Tom Hombergs 譯文原地址:https://weyunx.com/2019/02/04... ...
閱讀 3947·2021-11-17 09:33
閱讀 3290·2021-10-08 10:05
閱讀 3119·2021-09-22 15:36
閱讀 1145·2021-09-06 15:02
閱讀 2776·2019-08-29 12:45
閱讀 1595·2019-08-26 13:40
閱讀 3406·2019-08-26 13:37
閱讀 428·2019-08-26 13:37