使用NetBeans 7.4 beta提示进行更好的基于JUnit的单元测试
在上一篇文章中 ,我寫了NetBeans 7.4 beta中提供的提示 ,這些提示提高了開發人員避免Java異常處理帶來的討厭的運行時問題的能力。 在本文中,我將研究如何使用NetBeans 7.4 beta提供的另外兩個提示使單元測試在執行單元測試期間更加正確和清晰。 這些是“ Assert.assertEquals的不可轉換參數”和“ Assert.assertEquals的參數順序錯誤”提示。
就我從軼事證據和與其他Java開發人員的交談中所知,JUnit仍然是Java環境中使用最廣泛的單元測試框架。 這些大多數JUnit用戶都非常熟悉JUnit的Assert類及其許多重載的assertEquals方法。 NetBeans 7.4 beta現在提供了兩個提示,以使更容易適當地使用這些assertEquals方法。
盡管許多Assert.assertEquals()方法對于要聲明為相等的“期望”和“實際”參數都有非常特定的數據類型,但是有一個版本可以接受兩個對象,這意味著兩個不同類型的參數不可能被認為是“相等”的方法仍然可以傳遞給該方法。 編譯器無法阻止這種情況,但是NetBeans 7.4 beta包含了“ Assert.assertEquals的不可轉換參數”提示來解決該特定情況。 沒有這樣的提示,一個人更有可能直到他或她運行JUnit測試并看到失敗的斷言才意識到自己的錯誤。
我在使用JUnit時遇到的最常見問題之一(也是我喜歡Hamcrest的流暢API 的原因之一 )是,我似乎無法確切地記住assertEquals方法的參數順序。 通過猜測,我有50/50的幾率是正確的。 諸如NetBeans之類的現代Java IDE在編寫新的JUnit代碼時有很大幫助,因為它們的方法完成功能將指示首先指定“ expected”參數,然后指定“ actual”參數。 更常見的是,這是讀取代碼而不是編寫代碼時的問題,因為沒有方法完成可以幫助我讀取代碼。 NetBeans 7.4 beta通過突出顯示我通過“ Assert.assertEquals參數的錯誤順序”提示混淆了參數順序的情況來解決此問題。 啟用該提示(默認情況下為默認),我可以在運行時甚至在沒有方法完成的情況下,快速識別出亂序的參數。
上面討論的兩個提示都可以在非常簡單的單元測試類中進行演示。
CalculatorTest.java的一部分
/*** Test Calculator.sum(int ...).*/ @Test public void TestSumIntegers() {final Calculator calculator = new Calculator();Assert.assertEquals(calculator.add(1, 2, 3, 4, 5), 15);Assert.assertEquals("15", calculator.add(1, 2, 3, 4, 5)); }上面的單元測試方法正在測試的代碼對于此討論并不重要。 相反,重點是在兩種情況下使用Assert.assertEquals 。 上面顯示的兩種情況都是不正確的,并強制演示了前面討論的兩個NetBeans提示。 斷言兩個對象相等的第一次嘗試是將參數按錯誤的順序放置。 應首先列出“預期”值(硬編碼為15),然后是由測試方法計算出的“實際”值。 斷言兩個對象相等的第二次嘗試總是會失敗,因為類型不匹配:第一個參數是String,第二個參數是整數。 在這兩種情況下,單元測試代碼都可以毫無抱怨地進行編譯。 但是,在運行單元測試時,兩個斷言總是會失敗。 實際上,這些測試結果可能會無意中被解釋為正在測試的代碼的問題,直到有人更深入地查看測試失敗為止。
接下來的兩個屏幕快照演示了NetBeans 7.4 beta標記了兩個有問題的單元測試斷言語句。
關于“ Assert.assertEquals參數的順序不正確”提示,有一點需要注意。 當斷言語句類似于我的示例中所示的語句時,它會很好地工作:提供一個硬編碼的期望值作為“實際”值,同時提供一個明顯的計算值作為“期望”值。 下一個屏幕快照說明了這一點。 提示僅標記了我之前顯示的語句,即使順序不正確,也未標記其他將實際與預期進行比較的方法。
最后顯示的屏幕快照表明,在語句中直接訪問這些值的情況下,NetBeans提示只能檢測到錯誤的assertEquals參數順序(應該在實際值之前預期,而不是在實際值之前預期)。為第一個[expected]參數執行,并為第二[actual]參數提供預期的硬編碼值)。
本博客文章中涉及的兩個提示使使用常用的JUnit Assert.assertEquals方法更容易發現問題,這些問題只有在沒有提示的情況下分析單元測試運行結果才可能被發現。 盡管這些提示警告開發人員的兩個問題通常很容易檢測和修復,但是與NetBeans IDE在運行測試之前告訴您它們是錯誤的相比,檢測和修復這些問題仍然更加困難且耗時。
翻譯自: https://www.javacodegeeks.com/2013/09/better-junit-based-unit-tests-with-netbeans-7-4-beta-hints.html
總結
以上是生活随笔為你收集整理的使用NetBeans 7.4 beta提示进行更好的基于JUnit的单元测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么查看电脑使用次数与时间如何查看电脑的
- 下一篇: 通过基于JDBC的用户存储部署Ident