Squaretest 自動生成Mock單元測試

2021-10-11 21:17:52 字數 2700 閱讀 8150

今天來介紹一款工具squaretest,它是一款自動生成單元測試的外掛程式,為什麼會用到它也是因為最近公司上了**質量管控的指標,會考評各個專案的單元測試覆蓋率,以及sonar掃瞄出來的各種問題,很多老專案老**,或者著急交付的專案,單元測試嚴重缺失,覆蓋率只有5%不到,所以幾個小夥伴這幾天就在瘋狂的堆單元測試,3個人堆了2天才堆到30%,於是我也來上手幫忙寫了兩個,寫到第二個的時候就發現,這個活不應該是人幹的,要去看原來的**,然後根據邏輯寫各種mock,感覺是有跡可循的東西,所以就查了下,發現果然有外掛程式幫我們來幹這個事情,那麼解下來就來看看。

public

class

crawlerscreenshotserviceimpltest

@test

public

void

testreceivedata()

@test

public

void

testlistjobscreenshottask()

@test

public

void

testquery()

@test

public

void

testqueryselectboxdata()

@test

public

void

testfindexecutionscreenshottaskcount()

@test

public

void

testfindcrawerscreenshottaskbycreatetime()

@test

public

void

testquerycrawlerdashboard()

}

報錯了呢,不要慌,這個直接乾掉就可以了。

怎麼樣!刺不刺激,爽不爽,秒秒鐘90多行的**覆蓋率就到了90%以上.

上面說過第一次進來會讓你選擇單元測試的模板,如果你要切換的話可以在單元測試類中按快捷鍵,alt+m,或者通過squaretest的選單倒數第二個,下面這個就是按快捷鍵的效果,我選擇的是這個模板,你們也可以借鑑。

ok,以上squaretest部分就結束了,當然拉也不能高興的太早,這個類算是比較成功的情況,很多時候還是要你自己小修小改的,畢竟它生成出來的測試資料可能完全匹配不上你的if else資料對吧,但這都很好改啊,這樣就從自己分析if else變成了,debug程式了呀,**報錯,debug過去,看看是不是生成的資料有問題,改個資料,就通過了,反正本人用的是很舒暢的,妥妥的節省70%的工作量。

解決了上面乙個問題之後,又發現另乙個問題,這個工具vo,dto,entity,command,model這種實體類來講,一般這種實體類我們都用lombok的註解get,set,還有constract構造器等註解,但是這個工具只能生成這些實體類的構造器的單元測試,無法生成get set方法的單元測試,所以寫了個base方法,實體類繼承一下,簡單的寫兩行帶就好了,看下面**:

@springboottest

@runwith

(mockitojunitrunner.

class

)public

abstract

class

basevoentitytest

propertydescriptor pd =

newpropertydescriptor

(f.getname()

, modelclass)

; method get = pd.

getreadmethod()

; method set = pd.

getwritemethod()

; set.

invoke

(obj, get.

invoke

(obj));

}}@test

public

void

getandsettest()

throws invocationtargetexception, introspectionexception,

instantiationexception, illegalacces***ception

}

同樣的方式我們在實體類上通過squaretest生成單元測試,然後繼承我上面寫的那個base類,vo的單元測試**稍加改動,如下

看run完之後,覆蓋率100%,妥妥的,通過這兩個解決方案,一天之內我們就把覆蓋率搞到了60%以上,不要太刺激,大家可以用用試試哦,當然這個也不是純為了應付差事寫的單元測試,我們後續開發的時候,也可以用這個工具來生成,然後自測自己的**,這樣也是提公升工作效率的嘛!

python自動生成字幕 自動生成字幕軟體?

更新 經過提示發現autosub也不太好用了,我最近發現掛了 也沒有用,如果急需轉錄字幕文字的話建議還是選用其他付費服務吧吧。或者您可以去autosub的github主頁提交issue 那這樣 youtube 自動生成字幕可能就是最划算的了。用法 準備乙個有python 2的機器環境。然後pip i...

自動生成表單

專案開發中,我們要面對很多看似簡單卻很繁瑣的工作,如寫資料訪問層的相關 如果是多層結構則更加煩,幸好有 生成器之類的工具。最近公司的新專案完成了資料訪問和業務控制,接下來要面對很多個頁面的表單設計,頁面布局 拖拉控制項 輸入驗證 form資料繫結和獲取,簡單卻麻煩的事沒完沒了,想想都很害怕。在cnb...

自動生成 serialVersionUID 的設定

1 把滑鼠放在類名上,會出現小燈泡的形狀 點選 add serialversionuid field.即可生成 如果滑鼠放在類名上沒有出現 add serialversionuid field.進行以下操作 第 1 步 安裝generateserialversionuid外掛程式 如上圖所示,點選p...