在Eclipse中有效使用JUnit

最近,我被卷入了討論1和一些受感染的同伴2,他們關于我們如何在Eclipse IDE中使用JUnit 。 令人驚訝的是,對話帶來了并非所有人都知道的一些“技巧”。 這使我有了寫這篇文章的想法,總結了我們的演講。 誰知道–也許有人也有新事物……

啟動快捷方式

如果您要進行測試驅動開發 ,則必須經常運行測試。 顯然,使用例如編輯器的上下文菜單來選擇Run As -> JUnit Test來啟動正在開發的測試用例會有些乏味。 幸運的是,快捷鍵Alt+Shift+X,T可以執行相同的操作,而Alt+Shift+D,T可以在調試模式下執行測試。 但是,它所具有的不僅僅是眼神。

考慮以下情況:被測單元不再按預期工作。 您已經意識到這一點,因為您的測試套件的某個測試失敗。 看一下代碼可能不是確定性的,因此您決定啟動調試會話。 為此,您可以在當前光標位置設置一個斷點( Ctrl+Shift+B )。 在這種情況下,您可能對重新運行套件甚至給定測試類的所有測試都不感興趣。 您只想啟動單個失敗的測試3

現在,重要的是要知道上述的“運行方式”快捷方式對編輯器的光標位置敏感。 將光標移動到測試方法名稱,可以使用這些快捷方式啟動僅運行該測試方法的JUnit進程4 5

稍微進行一下示例,很有可能在調試過程中在被測單元中發現一個可疑點。 考慮解決方案時,您可以更改該單元的某些代碼。 之后,您想查看測試方法是否仍然失敗。 幸運的是,Eclipse中還有另一個快捷方式,它允許您重新運行最新執行的啟動配置。

使用F11重新運行您的調試會話,并使用Ctrl-F11重新正常運行測試方法。 但是,必須設置首選項設置才能使此工作可靠。 打開啟動首選項頁面( Windows- >首選項|運行/調試->啟動)后,有一個名為啟動操作的部分。 確保選中始終啟動以前啟動的應用程序單選按鈕。

方法模板

每次您要創建新的測試方法時,都可以考慮使用Eclipse編輯器模板來提高編碼效率。 將光標定位在新測試方法應位于的位置后,鍵入test并按Ctrl+Space快捷鍵以彈出內容幫助。

如上圖第一部分所示,內容助手提供了一個測試方法模板,該模板將在選擇時創建完整的方法存根。 不幸的是,這將是一個JUnit 3樣式的方法存根。 但是再次Ctrl+Space將顯示第二個以JUnit 4樣式編寫的模板。 如上圖的第二部分所示。

盡管兩次都擊中了快捷方式,但對于許多開發人員而言仍然顯得過于繁瑣。 編寫測試用例時,通常還必須創建帶有@ Before / @ After標記的設置和/或拆卸方法。 但值得慶幸的是,可以在Eclipse中提供自己的編輯器模板。 Holger Staudacher寫了一篇名為Eclipse的簡單JUnit4模板的好文章,他解釋了如何做到這一點,甚至在要旨中提供了一組模板 。

收藏夾

JUnit測試在很大程度上依賴于類junit.framework.Assert提供的各種assertXXX方法的使用。 這些方法都聲明為靜態方法,例如可以稱為Assert.assertTrue(condition) 。 但是據我所知,大多數人將使用靜態導入來縮短語句,以便于讀取assertTrue(condition)

但是默認情況下,IDE的內容輔助功能不會建議Assert類的靜態方法。 解決該問題的一種方法是編寫類名稱,然后讓內容協助提出可用的方法。 可以通過使用駱駝大小寫匹配來加速后者。 之后,按照Rüdiger 關于靜態導入的文章中所述使用Ctrl+Shift+M可以縮短語句并生成導入。

但是,我認為最有效的方法是將junit.framework.Assert類配置為內容輔助收藏夾,以允許靜態成員的提議,即使仍然缺少導入。 配置在(窗口->首選項| Java->編輯器-> Content Assist->收藏夾)中進行,如下所示:


JUnit視圖配置

在工作測試驅動下,定期運行測試幾乎可以有機地完成6 。 但是,運行較大的測試套件需要一些時間。 同時,將彈出“ JUnit視圖”并不斷更新測試結果列表。 但這可能會令人振奮,因為它會使人分心,甚至在最壞的情況下也會妨礙您的工作。

通過測試驅動的開發,您希望測試以100%的成功率獲得成功。 因此,許多開發人員只想知道有關失敗測試的信息-規則的例外。 JUnit視圖通過名為Activate on Error/Failure Only的配置設置對此提供支持,該設置Activate on Error/Failure Only可通過viewpart的菜單使用:

您的測試套件有時會失敗,并且一次可能存在多個問題。 默認情況下,JUnit視圖列出所有測試結果。 但是作為開發人員,您通常對失敗的項目更感興趣,并且可能會將大量的綠色測試視作混亂。 這里關注您的工作意味著關注失敗的測試。 有一個名為Show Failures Only的配置設置可用于更改此行為。 由于人們傾向于更頻繁地更改此設置,因此在viewpart的工具欄中提供了一個切換按鈕。


快速瀏覽

如果您使用的是Eclipse 3.x ,則有一個名為Fast View的不錯的功能,它可以使您的UI更加整潔。 總的來說,對于我經常但不連續使用的視圖和/或如果提供更多空間,我認為更清晰的視圖,我更喜歡這樣做。 例如,“覆蓋率”,“歷史記錄”或“呼叫層次結構”視圖。 viewpart選項卡提供了一個內容菜單,該菜單使將視圖用作快速視圖成為可能:

這會將視圖從其堆棧中刪除,并在工作臺左下角的快速視圖工具欄中顯示一個切換按鈕。 使用此按鈕,您可以激活/取消激活特定視圖作為疊加層7

JUnit快速查看按鈕的一個特定功能是,它提供有關最新測試運行的狀態信息或有關當前執行的進度信息的進度信息。 因此,這個小按鈕是您在JUnit上花費的大量時間所需的所有UI:

不幸的是,Eclipse 4.x中不再提供快速視圖。 但是有一種變通辦法可以在某種程度上滿足該行為。 您可以將要用作“快速視圖”的視圖移動到指定的視圖堆棧中,并最小化此堆棧。 代表最小化視圖堆棧的工具欄現在用作以前的快速視圖欄。 之所以如此工作,是因為有時激活/停用會掛起,并且您必須花一點時間來隱藏視圖并返回到編輯器。

從本質上講,我認為上面的部分涵蓋了我們在本文開頭提到的討論中所討論的要點。 也許您還可以獲得有關有用的JUnit快捷方式,使用模式之類的信息,或共享這些信息-歡迎添加評論。

  1. 討論是在我們偶爾希望一次自發的啤酒下班之后中進行的……
  2. 據說“受感染的測試”一詞最初是由Erich Gamma創造的。 他還與肯特·貝克 ( Kent Beck)一起發表了一篇名為《 感染了JUnit測試:程序員喜歡編寫測試》的文章 ,描述了一旦您與測試一致地推動編程工作,“您對開發的態度可能會改變”。
  3. 特別是,如果斷點不是如示例中那樣位于測試方法中,而是位于被測單元中,那么運行一個測試用例的所有測試方法會很煩人。 這是因為程序執行可能會在沒有問題的一種測試方法實際觸發的斷點處停止。
  4. 不幸的是,該框架無法將測試方法與非測試方法區分開。 在非測試方法上使用快捷方式將導致JUnit運行,其結果顯示為Unrooted Tests錯誤。
  5. 一些與會者認為,該框架會自動創建并保留啟動配置,這是次要的缺點。 因此,通過快捷方式運行單個測試方法會隨著時間的推移在啟動配置列表中產生很多混亂。
  6. 甚至有可用的工具可以連續運行您的測試。
  7. 在實踐中,我經常使用Ctrl+F7快捷鍵在視圖部分之間切換。


參考:來自我們的JCG合作伙伴 Frank Appel在Code Affine博客上有效地在Eclipse中使用JUnit 。

翻譯自: https://www.javacodegeeks.com/2012/11/working-efficiently-with-junit-in-eclipse.html

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

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

相關文章

jquery文件上傳控件 Uploadify

基于jquery的文件上傳控件,支持ajax無刷新上傳,多個文件同時上傳,上傳進行進度顯示,刪除已上傳文件。 要求使用jquery1.4或以上版本,flash player 9.0.24以上。 有兩個版本,一個用flash,一個是html5。html5…

imagick php 縮放,php使用imagick模塊實現圖片縮放、裁剪、壓縮示例

PHP 使用Imagick模塊 縮放,裁剪,壓縮圖片 包括gif圖片縮放 裁剪代碼如下:/*** 圖片裁剪* 裁剪規則:* 1. 高度為空或為零 按寬度縮放 高度自適應* 2. 寬度為空或為零 按高度縮放 寬度自適應* 3. 寬度,高度到不為空或為…

php實現第三方郵箱登錄_PHP實現用戶異地登錄提醒功能的方法

有時候你的網站賬號被盜或你在別處登錄操作后臺時,右下角會彈出提示信息,提醒你的賬號異地登錄,或者會被強制下線。對于這種安全性要求比較高的web網站,很多后臺管理都會做這種功能提醒。甄別自己的賬號是否被盜或者是否有另一個人…

課時47.datalist標簽(了解)

1.datalist標簽 作用&#xff1a;給輸入框綁定待選項 2.datalist格式&#xff1a; <datalist> <option>待選項內容</option> </datalist> 3.如何給輸入框綁定待選列表&#xff1f; 搞一個輸入框搞一個datalist列表給datalist列表標簽添加一個id給…

pandas.read_csv參數詳解

讀取CSV&#xff08;逗號分割&#xff09;文件到DataFrame也支持文件的部分導入和選擇迭代更多幫助參見&#xff1a;http://pandas.pydata.org/pandas-docs/stable/io.html參數&#xff1a;filepath_or_buffer : str&#xff0c;pathlib。str, pathlib.Path, py._path.local.Lo…

Gradle – Maven的觀點

正如我博客的讀者所知道的&#xff0c; 我有點像Maven迷 。 我從2007年8月左右開始使用Maven&#xff0c;從沒有回過頭。 但是&#xff0c;就像其他所有情況一樣&#xff0c;“變化是唯一不變的”。 現在這個領域還有其他參與者&#xff0c;Gradle看起來是最有前途的。 我決定試…

postgis安裝_從零開始,構建電子地圖網站:0_2_數據處理postgis

軟件安裝完&#xff0c;開始數據處理。從China Historical GIS下載一份數據。一、數據下載數據來源&#xff1a;China Historical GIS&#xff1a;https://sites.fas.harvard.edu/~chgis/data/chgis/v6/先下載一份時間序列數據&#xff1a;Download CHGIS V6 TIME SERIES Datah…

sar圖像去噪matlab,一種基于總曲率的SAR圖像變分去噪方法與流程

本發明屬于數字圖像處理技術領域&#xff0c;具體涉及一種基于總曲率的SAR圖像變分去噪方法。背景技術&#xff1a;&#xff1a;相干斑噪聲是合成孔徑雷達(Synthetic Aperture Radar&#xff0c;簡稱SAR)圖像的重要特征&#xff0c;嚴重影響SAR圖像的可解譯性。相干斑噪聲通常作…

Linux下用netstat查看網絡狀態、端口狀態

在linux一般使用netstat 來查看系統端口使用情況步。 netstat命令是一個監控TCP/IP網絡的非常有用的工具&#xff0c;它可以顯示路由表、實際的網絡連接以及每一個網絡接口設備的 netstat命令的功能是顯示網絡連接、路由表和網絡接口信息&#xff0c;可以讓用戶得知目…

課時2.瀏覽器和服務器(了解)

1.什么是瀏覽器&#xff1f; 瀏覽器就是由安裝在我們電腦上的一款軟件&#xff0c;QQ&#xff0c;百度影音等一樣&#xff0c;都是安裝在電腦上的一款軟件 那這些軟件之間由什么區別呢&#xff1f; 它們的區別就是它們的功能不太一樣&#xff0c;QQ是用來聊天的&#xff0c;…

微信自動回復

http://itchat.readthedocs.io/zh/latest/tutorial/tutorial0/。 這個是學習網址&#xff0c;到時候自己學一下。做個案例試試轉載于:https://www.cnblogs.com/lilinzhiyu/p/7985864.html

python 定義變量_用python解決動態的定義變量名(并給其賦值方法:大數據處理)...

前言&#xff1a;今天為大家帶來的內容是&#xff1a;用python解決動態的定義變量名(并給其賦值方法&#xff1a;大數據處理)具有很好的參考價值&#xff0c;希望對大家有所幫助。喜歡本文內容的記得點贊轉發收藏不迷路哦&#xff01;&#xff01;&#xff01;最近消費kafka數據…

appcan php圖片上傳,appcan文件上傳php,asp通用

首先說appcan內部實現了file標簽&#xff0c;我們就不用糾結這個問題了&#xff0c;還提供了上傳百分比哦&#xff0c;然后下面的方法按從上到下依次看&#xff0c;很簡單。上傳php&#xff0c;asp頁面很簡單 &#xff0c;接收‘file_data’這個文件信息就可以了&#xff0c;如…

javascript 動態修改css樣式

方法一&#xff1a;改變外聯css文件&#xff0c;這里不講這個。 方法二&#xff1a;通過改變claaName來改變樣式&#xff0c;語法&#xff1a; obj.className "style2";//或者obj.setAttribute("class", "style2"); 方法三&#xff1a;使用obj…

POJ 3225 Help with Intervals(線段樹)

POJ 3225 Help with Intervals 題目鏈接 集合數字有的為1&#xff0c;沒有為0&#xff0c;那么幾種操作相應就是置為0或置為1或者翻轉&#xff0c;這個隨便推推就能夠了&#xff0c;然后開閉區間的處理方式就是把區間擴大成兩倍&#xff0c;偶數存點&#xff0c;奇數存線段就可…

在Spring中嵌入HSQLDB服務器實例

我一直在愉快地使用XAMPP進行開發&#xff0c;直到不得不將其托管在可通過Internet訪問的某個地方&#xff0c;供客戶端進行測試和使用。 我有一個僅具有384 RAM的VPS&#xff0c;并且需要快速找到一種方法&#xff0c;因此決定將XAMPP安裝到VPS中。 由于內存不足&#xff0c;因…

python與材料計算公式_《從問題到程序:用Python學編程和計算》——2.11 補充材料-阿里云開發者社區...

本節書摘來自華章計算機《從問題到程序&#xff1a;用Python學編程和計算》一書中的第2章&#xff0c;第2.11節&#xff0c;作者 裘宗燕&#xff0c;更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。2.11 補充材料本書各章的主要內容將圍繞著怎樣通過編程解決計算問題…

centos 6.9 NTP基準時間服務器配置

時間服務器端 yum install ntp -y vim /etc/ntp.conf 增加允許客戶端訪問 restrict 192.168.0.0 mask 255.255.0.0 nomodify 配置成自啟動 chkconfig ntpd on service ntpd start 客戶端配置 每天對時一次 crontab -e * 2 * * * ntpdate 192.168.139.130 轉載于:https://www.cn…

hsdfz -- 6.16 -- day1

恩這回不寫游記了 按照老師要求記錄今天的心里路程&#xff1a;這題似乎可做期望得分150->日部分分似乎不是很顯然->a題似乎是結論題&#xff0c;大力猜一波結論->過不了樣例&#xff0c;先看b題->b題動態樹&#xff0c;似乎可以肝lct->不會維護重鏈&#xff0c…

課時39.細線表格(理解)

請你設計出以下圖片里的這個樣式的表格 步驟&#xff1a; 我先來制作一個兩行兩列的表格 2.將table里的cellspacing設置成0 外邊距是不見了&#xff0c;但是和我們想要完成的圖片有一定的差距&#xff0c;我們發現這樣做出來的圖片好像是兩條線合并到了一起一樣&#xff0c;實…