国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring 異常單元測試的解決

Spring 異常單元測試的解決

2021-05-07 13:35張喜碩 Java教程

這篇文章主要介紹了Spring 異常單元測試的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

白盒測試,要求對代碼中的每行代碼至少覆蓋一次。

?
1
2
3
4
5
6
7
@apimodelproperty("學科類別")
@manytoone
// 設(shè)置學科類別字段不能為空
@joincolumn(nullable = false)
@jsonview({nonejsonview.class,
    measurementunitcategoryjsonview.getallbydisciplineid.class})
private discipline discipline;

以之前對學科設(shè)置不為空為例,我們需要測試兩種情況,為空時的異常和不為空時保存正常。

?
1
2
3
4
5
6
7
8
@test
public void savetest() {
  logger.debug("新建計量單位類別");
  measurementunitcategory measurementunitcategory = new measurementunitcategory();
 
  logger.debug("測試保存");
  measurementunitcategoryservice.save(measurementunitcategory);
}

這里我們調(diào)用了save方法,但是ide并沒有提示我們需要捕獲異常,但是并不代表這個save方法不拋出異常,可以拋出非檢查的runtimeexception或其派生的異常。

為了測試這個異常,我們首先運行這行代碼,看看出現(xiàn)什么異常。

Spring 異常單元測試的解決

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]

我們看到有三個異常,先是插入這條記錄時的jdbcsqlexception,然后該異常引起了constraintviolationexception,新異常又引起了dataintegrityviolationexception

這個caused by其實是異常的一種封裝,比如說底層,可能會拋出異常,但是我們一般都是在比較高的層面去處理異常。

就拿這個來舉例子,dataintegrityviolationexception數(shù)據(jù)違反異常,很多種可能都會產(chǎn)生這種異常,所以這種異常的處理方法都是相同或類似的。

當?shù)讓訏伋隽艘粋€jdbcsqlexception,然后調(diào)用它的方法就catch了這個異常,并用該異常構(gòu)建了一個新的異常constraintviolationexception(限制違反異常),然后再向上層拋出,再到上層捕獲,構(gòu)建新異常dataintegrityviolationexception并拋給了我們,我們沒有處理,然后控制臺就報錯了。

這樣一直封裝向上拋的好處就是我可以用一個異常來處理一類相似的情況,然后在處理這個異常的時候可以追根溯源,一直精確到是由什么引起的。如果沒有這個封裝的話,那我們需要直接去catch底層的異常才能精確地定位到錯誤。

好了,我們這里需要捕獲的異常就是應用拋給我們的dataintegrityviolationexception異常。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@test
public void savetest() {
  logger.debug("基礎(chǔ)測試數(shù)據(jù)準備");
  measurementunitcategory measurementunitcategory = new measurementunitcategory();
  boolean catchexception = false;
 
  logger.debug("測試保存,期待拋出異常");
  try {
    measurementunitcategoryservice.save(measurementunitcategory);
  } catch (dataintegrityviolationexception e) {
    catchexception = true;
  }
 
  logger.debug("斷言捕獲異常為真");
  assertthat(catchexception).istrue();
}

運行測試,通過。

Spring 異常單元測試的解決

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000015206760

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 荷兰欧美一级毛片 | 成人免费一区二区三区视频网站 | 国产99精品 | 国产精品永久 | 亚洲福利电影网 | 国产在线一区二区三区 | 91国产精品 | 欧美一区二区三区精品 | av观看| 在线国产精品一区 | 亚洲影视在线 | 欧美日韩视频在线观看免费 | 精品视频在线播放 | 澳门av | 亚洲精彩视频 | 亚洲一级片av | 国产欧美精品区一区二区三区 | 亚洲综合一区二区 | 欧美一区二区三区久久久久久桃花 | 精品美女 | 噜噜噜噜狠狠狠7777视频 | 精品视频一区二区 | 久久视频一区 | 国产片av | 日韩精品在线视频 | 成人在线一区二区 | 国产视频三区 | 亚洲成人一区二区三区 | sis001亚洲原创区 | 在线91网 | 日韩欧美一区二区精品 | 亚洲精品久久久久久一区二区 | 欧美在线a | 综合久久久久 | 精品色 | 日韩精品一区二区在线观看 | 国产成人一区二区 | 亚洲综合日韩欧美 | 国产一区二区三区四区 | 免费观看在线午夜影视 | 一区二区三区在线播放视频 |