在Eclipse中有效使用JUnit
最近,我被卷入了討論1和一些受感染的同伴2,他們關(guān)于我們?nèi)绾卧贓clipse IDE中使用JUnit 。 令人驚訝的是,對(duì)話(huà)帶來(lái)了并非所有人都知道的一些“技巧”。 這使我有了寫(xiě)這篇文章的想法,總結(jié)了我們的演講。 誰(shuí)知道–也許有人也有新事物……
啟動(dòng)快捷方式
如果您要進(jìn)行測(cè)試驅(qū)動(dòng)開(kāi)發(fā) ,則必須經(jīng)常運(yùn)行測(cè)試。 顯然,使用例如編輯器的上下文菜單來(lái)選擇Run As -> JUnit Test來(lái)啟動(dòng)正在開(kāi)發(fā)的測(cè)試用例會(huì)有些乏味。 幸運(yùn)的是,快捷鍵Alt+Shift+X,T可以執(zhí)行相同的操作,而Alt+Shift+D,T可以在調(diào)試模式下執(zhí)行測(cè)試。 但是,它所具有的不僅僅是眼神。
考慮以下情況:被測(cè)單元不再按預(yù)期工作。 您已經(jīng)意識(shí)到這一點(diǎn),因?yàn)槟臏y(cè)試套件的某個(gè)測(cè)試失敗。 看一下代碼可能不是確定性的,因此您決定啟動(dòng)調(diào)試會(huì)話(huà)。 為此,您可以在當(dāng)前光標(biāo)位置設(shè)置一個(gè)斷點(diǎn)( Ctrl+Shift+B )。 在這種情況下,您可能對(duì)重新運(yùn)行套件甚至給定測(cè)試類(lèi)的所有測(cè)試都不感興趣。 您只想啟動(dòng)單個(gè)失敗的測(cè)試3 。
現(xiàn)在,重要的是要知道上述的“運(yùn)行方式”快捷方式對(duì)編輯器的光標(biāo)位置敏感。 將光標(biāo)移動(dòng)到測(cè)試方法名稱(chēng),可以使用這些快捷方式啟動(dòng)僅運(yùn)行該測(cè)試方法的JUnit進(jìn)程4 5 。
稍微進(jìn)行一下示例,很有可能在調(diào)試過(guò)程中在被測(cè)單元中發(fā)現(xiàn)一個(gè)可疑點(diǎn)。 考慮解決方案時(shí),您可以更改該單元的某些代碼。 之后,您想查看測(cè)試方法是否仍然失敗。 幸運(yùn)的是,Eclipse中還有另一個(gè)快捷方式,它允許您重新運(yùn)行最新執(zhí)行的啟動(dòng)配置。
使用F11重新運(yùn)行您的調(diào)試會(huì)話(huà),并使用Ctrl-F11重新正常運(yùn)行測(cè)試方法。 但是,必須設(shè)置首選項(xiàng)設(shè)置才能使此工作可靠。 打開(kāi)啟動(dòng)首選項(xiàng)頁(yè)面( Windows- >首選項(xiàng)|運(yùn)行/調(diào)試->啟動(dòng))后,有一個(gè)名為啟動(dòng)操作的部分。 確保選中始終啟動(dòng)以前啟動(dòng)的應(yīng)用程序單選按鈕。
方法模板
每次您要?jiǎng)?chuàng)建新的測(cè)試方法時(shí),都可以考慮使用Eclipse編輯器模板來(lái)提高編碼效率。 將光標(biāo)定位在新測(cè)試方法應(yīng)位于的位置后,鍵入test并按Ctrl+Space快捷鍵以彈出內(nèi)容幫助。
如上圖第一部分所示,內(nèi)容助手提供了一個(gè)測(cè)試方法模板,該模板將在選擇時(shí)創(chuàng)建完整的方法存根。 不幸的是,這將是一個(gè)JUnit 3樣式的方法存根。 但是再次Ctrl+Space將顯示第二個(gè)以JUnit 4樣式編寫(xiě)的模板。 如上圖的第二部分所示。
盡管兩次都擊中了快捷方式,但對(duì)于許多開(kāi)發(fā)人員而言仍然顯得過(guò)于繁瑣。 編寫(xiě)測(cè)試用例時(shí),通常還必須創(chuàng)建帶有@ Before / @ After標(biāo)記的設(shè)置和/或拆卸方法。 但值得慶幸的是,可以在Eclipse中提供自己的編輯器模板。 Holger Staudacher寫(xiě)了一篇名為Eclipse的簡(jiǎn)單JUnit4模板的好文章,他解釋了如何做到這一點(diǎn),甚至在要旨中提供了一組模板 。
收藏夾
JUnit測(cè)試在很大程度上依賴(lài)于類(lèi)junit.framework.Assert提供的各種assertXXX方法的使用。 這些方法都聲明為靜態(tài)方法,例如可以稱(chēng)為Assert.assertTrue(condition) 。 但是據(jù)我所知,大多數(shù)人將使用靜態(tài)導(dǎo)入來(lái)縮短語(yǔ)句,以便于讀取assertTrue(condition) 。
但是默認(rèn)情況下,IDE的內(nèi)容輔助功能不會(huì)建議Assert類(lèi)的靜態(tài)方法。 解決該問(wèn)題的一種方法是編寫(xiě)類(lèi)名稱(chēng),然后讓內(nèi)容協(xié)助提出可用的方法。 可以通過(guò)使用駱駝大小寫(xiě)匹配來(lái)加速后者。 之后,按照Rüdiger 關(guān)于靜態(tài)導(dǎo)入的文章中所述使用Ctrl+Shift+M可以縮短語(yǔ)句并生成導(dǎo)入。
但是,我認(rèn)為最有效的方法是將junit.framework.Assert類(lèi)配置為內(nèi)容輔助收藏夾,以允許靜態(tài)成員的提議,即使仍然缺少導(dǎo)入。 配置在(窗口->首選項(xiàng)| Java->編輯器-> Content Assist->收藏夾)中進(jìn)行,如下所示:
JUnit視圖配置
在工作測(cè)試驅(qū)動(dòng)下,定期運(yùn)行測(cè)試幾乎可以有機(jī)地完成6 。 但是,運(yùn)行較大的測(cè)試套件需要一些時(shí)間。 同時(shí),將彈出“ JUnit視圖”并不斷更新測(cè)試結(jié)果列表。 但這可能會(huì)令人振奮,因?yàn)樗鼤?huì)使人分心,甚至在最壞的情況下也會(huì)妨礙您的工作。
通過(guò)測(cè)試驅(qū)動(dòng)的開(kāi)發(fā),您希望測(cè)試以100%的成功率獲得成功。 因此,許多開(kāi)發(fā)人員只想知道有關(guān)失敗測(cè)試的信息-規(guī)則的例外。 JUnit視圖通過(guò)名為Activate on Error/Failure Only的配置設(shè)置對(duì)此提供支持,該設(shè)置Activate on Error/Failure Only可通過(guò)viewpart的菜單使用:
您的測(cè)試套件有時(shí)會(huì)失敗,并且一次可能存在多個(gè)問(wèn)題。 默認(rèn)情況下,JUnit視圖列出所有測(cè)試結(jié)果。 但是作為開(kāi)發(fā)人員,您通常對(duì)失敗的項(xiàng)目更感興趣,并且可能會(huì)將大量的綠色測(cè)試視作混亂。 這里關(guān)注您的工作意味著關(guān)注失敗的測(cè)試。 有一個(gè)名為Show Failures Only的配置設(shè)置可用于更改此行為。 由于人們傾向于更頻繁地更改此設(shè)置,因此在viewpart的工具欄中提供了一個(gè)切換按鈕。
快速瀏覽
如果您使用的是Eclipse 3.x ,則有一個(gè)名為Fast View的不錯(cuò)的功能,它可以使您的UI更加整潔。 總的來(lái)說(shuō),對(duì)于我經(jīng)常但不連續(xù)使用的視圖和/或如果提供更多空間,我認(rèn)為更清晰的視圖,我更喜歡這樣做。 例如,“覆蓋率”,“歷史記錄”或“呼叫層次結(jié)構(gòu)”視圖。 viewpart選項(xiàng)卡提供了一個(gè)內(nèi)容菜單,該菜單使將視圖用作快速視圖成為可能:
這會(huì)將視圖從其堆棧中刪除,并在工作臺(tái)左下角的快速視圖工具欄中顯示一個(gè)切換按鈕。 使用此按鈕,您可以激活/取消激活特定視圖作為疊加層7 :
JUnit快速查看按鈕的一個(gè)特定功能是,它提供有關(guān)最新測(cè)試運(yùn)行的狀態(tài)信息或有關(guān)當(dāng)前執(zhí)行的進(jìn)度信息的進(jìn)度信息。 因此,這個(gè)小按鈕是您在JUnit上花費(fèi)的大量時(shí)間所需的所有UI:
不幸的是,Eclipse 4.x中不再提供快速視圖。 但是有一種變通辦法可以在某種程度上滿(mǎn)足該行為。 您可以將要用作“快速視圖”的視圖移動(dòng)到指定的視圖堆棧中,并最小化此堆棧。 代表最小化視圖堆棧的工具欄現(xiàn)在用作以前的快速視圖欄。 之所以如此工作,是因?yàn)橛袝r(shí)激活/停用會(huì)掛起,并且您必須花一點(diǎn)時(shí)間來(lái)隱藏視圖并返回到編輯器。
從本質(zhì)上講,我認(rèn)為上面的部分涵蓋了我們?cè)诒疚拈_(kāi)頭提到的討論中所討論的要點(diǎn)。 也許您還可以獲得有關(guān)有用的JUnit快捷方式,使用模式之類(lèi)的信息,或共享這些信息-歡迎添加評(píng)論。
參考:來(lái)自我們的JCG合作伙伴 Frank Appel在Code Affine博客上有效地在Eclipse中使用JUnit 。
翻譯自: https://www.javacodegeeks.com/2012/11/working-efficiently-with-junit-in-eclipse.html
總結(jié)
以上是生活随笔為你收集整理的在Eclipse中有效使用JUnit的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 电脑怎么装双系统?可以在U盘里装第二个系
- 下一篇: Gradle – Maven的观点