我的測試和代碼分析工具箱

上周,我們在LINEAS成立了一個“測試技能小組”,該小組用于交換有關測試的知識。 各種各樣的問題反復出現的一個問題是:有哪些工具可以測試和分析您的代碼? 因此,這是我對此的個人回答,按照我傾向于將其介紹給項目的大致順序:

JUnit :JUnit幾乎是其他所有內容的基礎。 它的Java單元測試框架與IDE,構建工具和CI Server進行了高度集成。 我不認真對待“單位”一詞。 我也使用JUnit執行所有其他類型的測試。

Mockito :有很多Mocking框架,但是我更喜歡這個框架。 它具有不錯的DSLish API,我覺得很好用。 唯一的缺點是,在某些特殊情況下,標準API不起作用,必須使用另一種語法 。

PowerMock :我實際上不嘗試將其引入項目中。 如果要模擬構造函數,靜態或最終方法,則需要PowerMock。 如果您需要這樣做,PowerMock可以完成工作,但最好不要這樣做。

Jenkins :免費的持續集成服務器。 并非完全是一件美麗的事,但它確實有效,易于設置,并且借助幾個插件可以完成我到目前為止所需的一切。

CheckStyle :一種靜態代碼分析,它發現許多不良做法,并且也可以檢查許多編碼約定。 集成在IDE和CI服務器中。 該領域還有其他值得考慮的工具: FindBugs和PMD 。 您也可以使用Checkstyle來收集有關代碼的簡單指標 。

JDepend :對代碼的依賴項進行靜態代碼分析。 我使用它來針對代碼中的程序包之間的周期編寫測試,也為了將依賴項限制為我愿意在代碼庫中接受的依賴項。 前一段時間,我發現JDepend中存在一些限制,導致JDepend錯過了依賴項(我認為它不考慮注釋中的類或其他內容)。 因此,我正在研究DependencyFinder ,它似乎功能更強大,但肯定更難使用。 我實際上構建了一個小工具,用于基于DependencyFinder 可視化依賴關系。

Cobertura / EclEmma :Cobertura和Emma是代碼覆蓋率工具。 我都用它們。 Emma以EclEmma的形式作為eclipse插件使用,而Cobertura在Jenkins中使用,因為我們無法讓Emma在我們的Jenkins實例上正常工作。

聲納 :它從您的代碼中收集大量指標,并將其作為網站提供。 實際上,有很多符合我的口味。 在一個嚴肅的項目中,您可以整天看數字。 聲納的真正優點在于,它可以隨時間跟蹤這些數字,因此您可以查看平均方法長度是隨時間增加還是減少。 在某些項目中,我配置了一個圖表,其中隨時間推移繪制了最重要的數字,并將其添加到Jenkins的主屏幕中。

參考文獻: 我的測試和代碼分析工具箱從我們JCG伙伴延Schauder不以schauderhaft博客。

相關文章 :

  • JUnit 4.9(測試版3)中的規則
  • Spring 3使用JUnit 4進行測試– ContextConfiguration和AbstractTransactionalJUnit4SpringContextTests
  • 測試技巧–不編寫測試
  • 軟件開發和維護中的收益遞減
  • 任何軟件開發公司應存在的服務,實踐和工具,第1部分
  • 我不是工程師–我是軟件開發人員
  • 針對用戶和新采用者的敏捷軟件開發建議
  • Java工具:源代碼優化和分析

翻譯自: https://www.javacodegeeks.com/2011/12/my-testing-and-code-analysis-toolbox.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374235.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374235.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374235.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新唐M0 KEIL環境搭建,找不到device不識別,關鍵:Nu-Link_Keil_Driver

公司用新唐的芯片,網上關于新唐的資料相對ST確實少得可憐,搭建環境也是搞了好久,去keil官網下載安裝了新唐的pack 打開官方參考工程還是提示找不到device,option里面也沒有識別出來。 百度了好久,嘗試了各種辦法&…

c語言有趣代碼_【新課預知】——C語言程序設計

編者按:如今疫情這么嚴重,為了保護好自己,為了身邊的人,大家可一定要聽從國家號召——“宅”起來!并且,小編們為了讓大家伙“宅”得更加健康,可是費了不少腦筋呢,學哉數理公眾號首次…

用R語言的quantreg包進行分位數回歸

什么是分位數回歸 分位數回歸(Quantile Regression)是計量經濟學的研究前沿方向之一,它利用解釋變量的多個分位數(例如四分位、十分位、百分位等)來得到被解釋變量的條件分布的相應的分位數方程。 與傳統的OLS只得到均值方程相比,…

算法—快速排序Sqrt (C語言)

/* 快速排序 */ #include"stdio.h" #include"stdlib.h" int compare(const void* a,const void* b) {return (*(int *)a-*(int *)b); }int main() {int i,a[]{32,29,59,8,22,68,89,77},n;nsizeof(a)/sizeof(a[0]);printf("排序前:\n");for(i0;i&…

常規單元測試和存根–測??試技術4

我的上一個博客是有關測試代碼的方法以及討論您要做和不需要進行測試的方法的一系列博客中的第三篇。 它基于我使用一種非常常見的模式從數據庫中檢索地址的簡單方案: …并且我提出了這樣的想法:任何不包含任何邏輯的類都不需要進行單元測試。 在其中&am…

中微CMS32 Keil環境搭建

打開中微官網https://www.mcu.com.cn/Products/113/pids/.html 把這三個資料都下載好。 環境搭建需要用的就是第三個pack包了 坑爹的是pack包下載下來是.zip格式 下載好后需要修改為.pack格式 運行即可。 打開三個資料中的demo code的工程 target和device都能識別出 編…

Windows下sass無法編譯

最近windows下使用sass老是出現各種莫名其買的問題,下面是我的一些解決辦法 windows下編譯sass不支持中文解決辦法網上給的是 解決辦法: 1.koala可視化編譯工具, 找到安裝目錄里面sass-3.3.7模塊下面的engine.rb文件,例如下面路徑…

數據庫面試中常用的10個問題

1.觸發器的作用?答:觸發器是一中特殊的存儲過程,主要是通過事件來觸發而被執行的。它可以強化約束,來維護數據的完整性和一致性,可以跟蹤數據庫內的操作從而不允許未經許可的更新和變化。可以聯級運算。如&…

測試技巧–不編寫測試

對此沒有太多疑問,測試代碼的方式是一個有爭議的問題。 不同的測試技術因各種原因(包括企業文化,經驗和總體心理觀點)而受到不同開發人員的青睞。 例如,您可能更喜歡編寫經典的單元測試,通過檢查返回值來單…

Ubuntu鏡像下載地址

https://mirrors.aliyun.com/ubuntu-releases/ 用迅雷下載速度挺快的

算法—實現排列 A(n,m)

/* 實現排列A&#xff08;n,m&#xff09;*/ #include "stdio.h" int m,n,a[30]; long s0; int main() {int p(int k);printf("input n(n<10):"); scanf("%d",&n);printf("input m(<1m<n):"); scanf("%d",&…

oracle忘記用戶密碼

在cmd命令行下輸入sqlplus / as sysdba alter user system identified by abc; 就可以將system用戶的密碼改成abc了。 alter user sys identified by abc; sys用戶的密碼也改成abc了。 然后你再登錄sqlplus: 轉載于:https://www.cnblogs.com/zzlp/p/4936109.html

python初體驗-hello world答案_Python初體驗_基礎(一)

一&#xff1a;變量 變量的賦值&#xff1a; name “Meng” 上述代碼聲明了一個變量&#xff0c;變量名為name&#xff0c;變量name的值為&#xff1a;”Meng“ 變量定義&#xff1a; 一個在內存存數據的容器。 變量的意義&#xff1a; 保存程序執行的中間結果或狀態&#xff…

Codeforces Round #365 (Div. 2) D. Mishka and Interesting sum (離線樹狀數組+前綴xor)

題目鏈接&#xff1a;http://codeforces.com/contest/703/problem/D 給你n個數&#xff0c;m次查詢&#xff0c;每次查詢問你l到r之間出現偶數次的數字xor和是多少。 我們可以先預處理前綴和Xor[i]&#xff0c;表示1~i的xor和。因為num^num0&#xff0c;所以Xor[r] ^ Xor[l - 1…

九齊NY8B072A單片機使用筆記(二)TIMER1/2/3定時器

先上代碼 volatile unsigned long g_timer0_delay_conut 0;void main(void) {DISI(); //Disable all unmasked interruptsNy8b072a_Gpio_Init();//Ny8b072a_Timer1_Init();//Ny8b072a_Timer2_Init();Ny8b072a_Timer3_Init();ENI(); // Enable all unmasked interrupts whil…

新的Java緩存標準(javax.cache)

這篇文章探討了新的Java緩存標準&#xff1a;javax.cache。 它如何適應Java生態系統 該標準由JSR107開發&#xff0c;作者是共同規范負責人。 JSR107包含在JSR342開發的Java EE 7中。 Java EE 7將于2012年底完成。但是與此同時&#xff0c;javax.cache將在Java SE 6和更高版本…

Eclipse搭建scala環境(解決“JDT weaving is currently disabled”問題)

隨著Apache Spark&#xff0c;scala也成了必學的語言&#xff0c;下面講一下Eclipse搭建scala開發環境。 網上有很多的教程&#xff0c;但是給的scala的地址下載的插件無法開發scala&#xff0c;會出現“JDT weaving is currently disabled”的問題,這是由于使用了錯誤的Scala地…

python如何輸出結果_如何在python2.7中打印輸出結果?

我正在存儲一些數據&#xff0c;如溫度&#xff0c;濕度和強度&#xff0c;這是我的Arduino輸出和輸入為我的python2.7&#xff0c;我正在繪制圖表的數據。我也想將Arduino輸出存儲到文本文件中&#xff0c;但是我無法這樣做&#xff1a; 這是我的python代碼import serial impo…

python字符串連接的三種方法及其效率、適用場景詳解

python字符串連接的方法&#xff0c;一般有以下三種:方法1&#xff1a;直接通過加號()操作符連接website& 39;python& 39;& 39;tab& 39;& 39; com& 39;方法2 python字符串連接的方法&#xff0c;一般有以下三種: 方法1&#xff1a;直接通過加號()操作符…

算法—遞歸實現 C(m,n)

/* 遞歸實現 C(m,n) */#include "stdio.h" int m,n,s,a[20];int main() {int c(int k);s0; a[0]0;scanf("%d%d",&m,&n);printf("\nC(%d,%d)%d\n",m,n,c(1));}//組合遞歸函數C(k) int c(int k) {int i,j;if(k<n){for(ia[k-1]1;i<m…