2011-02-24 31 views
4

我的團隊正在努力教育我們的一些開發人員進行測試。他們明白爲什麼要寫測試,並且在寫測試的時候,他們應該寫測試,但在編寫好的測試方面有點欠缺。讓JUnit失敗,實際上並沒有運行斷言的測試

我剛纔看到一個犯這樣

public void SomeTest{ 

@Test 
public void testSomething{ 
System.out.println(new mySomething.getData()); 
} 

所以他們至少確保他們的代碼給了他們通過尋找預期的輸出。

在我們能真正推銷代碼評論的想法之前,與此同時,我正在考慮讓JUnit在任何沒有實際assertXXX或失敗語句的測試中失敗。然後,我想讓這個失敗消息說「你的測試應該使用斷言並且實際檢查輸出!」。

我完全期待這導致像assertTrue(1 == 1);這樣的電話。我們正在幫助團隊進行正確的測試和代碼審查,是否有任何技術機制可以幫助已經獲得它的開發人員簡化生活?那些幫助新人理解的技術機制呢?

回答

1

您可以使用一些靜態代碼分析器。

我使用PMD其中包括JUnit rule set。有很多IDE plugins這將標記IDE中的規則違規。您可以根據需要配置規則集。

您還可以從其他規則集中獲益 - 它會警告您代碼風格/最佳實踐違規(儘管您必須決定是否該工具或您是傻瓜:-))。

2

我認爲你應該考慮組織變革:指導,培訓,代碼評論。

這些工具只能幫助你,如果你真誠地使用它們並對目標有基本的瞭解。如果其中一個失蹤,他們不會幫助你。

人類只是聰明的做轉儲的事情或解決指標。我認爲如果他們不能寫一個有用的測試,你的評估是不正確的,他們是「他們」在船上。自動工具在這個階段根本不是正確的工具。你不能通過一個程序告訴下一步該做什麼。

+0

我和你一起讓人們購買並接受教育。我正在尋找更多工具來幫助其他開發人員,並監視代碼,以便當我們發現一個不好的測試時,我們可以將其標記出來並與仍在學習的人交談。 – Freiheit 2011-02-25 17:22:56

0

爲未來的觀衆回答陳述的問題。

如果任何異常,錯誤拋出 - >測試失敗,JUnit使用反射來運行測試函數,否則成功。 Assert類只是一個utils類。