2009-06-24 21 views
5

有沒有一種方法可以讓螞蟻運行單元測試只是爲了構建它的java類?例如,如果MyClass.java過時,ant將生成MyClass.class。之後,我希望它也運行MyClassTest和MyClassTestSuite(如果它們存在的話)。它不必基於命名約定。我會很好地使用註釋或任何其他方法。我如何才能運行單元測試只是源文件已更改?

編輯:有人說這是一個壞主意。它是,如果我計劃沒有運行所有的單元測試檢查。我的主要項目有超過16k個單元測試,大約需要20分鐘才能運行。我會在辦理登機手續前運行它們,但每次更改文件時運行整個套件都是不切實際的。對不起,我應該給予更多的上下文。

回答

4

這不是那麼容易......

看看Atlassian Clover。它有你夢想的功能,但它不是免費的。

6

我不會推薦這種方法,有很好的機會遺漏由副作用引起的錯誤。

3

看看Infinitest,它是運行基於源文件的測試的Eclipse(和IntelliJ)一個插件,你剛纔改變:

Infinitest Website

有關概述見截屏在這裏:

Screencast Overview

+0

Infinitest太棒了。沒有它我就不會編碼。 這是一個原因,我不能切換到NetBeans的 – 2010-06-11 15:27:31

+0

的截屏鏈路斷開時 - 我在這裏找到:http://improvingworks.com/products/infinitest/ – 2011-03-27 01:28:53

4

對我來說這似乎是一個壞主意。當然,更改後的源文件需要測試,但也需要依賴這些文件的任何文件以及依賴這些文件的文件等。您必須跟蹤哪個文件取決於其他文件,這是一個相當大的問題。

在我看來,如果這個項目足夠大,在試圖解決測試依賴樹問題上有很大的收穫,那麼這個項目可能太大了?也許是時候把它分成獨立的項目一起工作了,每個項目都可以彼此獨立地進行測試。

0

我想和其他人說,這是你想避免的事情。僅對已更改的特定類運行測試用例引入了一種風險,即您將進行一項更改,該更改會打破對未更改的類進行測試,但對已更改的某些代碼具有依賴性。

即使您對編程接口和模擬單元測試中的依賴關係很積極,這也是一種風險。例如,靜態工具類可能有很多類直接使用它們。在這裏,很容易想象一種情況,您可以對靜態實用程序方法進行更改,確保該方法的測試正常運行,並且如果您沒有運行所有的程序,則會打斷大量調用該方法的代碼試驗。

3

我不知道用ANT來做這件事,但是你可以在Eclipse中做這樣的事情。

Kent Beck編寫了一個名爲JUnit Max的Eclipse插件,可以在保存代碼後運行單元測試。它首先運行「最有可能失敗」的測試。

JUnit Max

0

那麼,你很可能使用的變量,如果你遵循命名約定做到這一點。獲取已更改文件的列表,並運行相應的測試。但我會建議反對它,像其他答案解釋。

相關問題