2

我正在認真地使用Grails進行非常愉快的時間測試。我將描述我的經驗,並且我想知道是否有更好的方法。使用IDEA使用grails進行測試的最佳方法是什麼?

  1. 我在測試中遇到的第一個問題是,當集成測試中的.save()失敗時,Grails不會立即向開發人員反饋。假設你有一個有12個字段的域類,其中1個違反了約束條件,當你創建實例時你不知道它,它只是不能保存。自然,之後的測試代碼將會失敗。

這是最麻煩的,因爲被測試的東西可能沒問題......而真正的風險和痛苦是測試本身的設置代碼。

因此,我試圖養成使用.save(failOnError:true)來避免這個問題的習慣,但那不是每個人都可以輕鬆地在項目上工作的東西......並且它是一種bloaty。將代碼作爲單元測試的一部分自動運行,這將會很有用。

  1. 集成測試運行緩慢。我無法理解1節省1個對象的集成測試如何運行15-20秒。通過一些仔細的測試計劃,我已經能夠獲得1000次測試與實際數據庫交談,並且在每次測試之後進行dbunit轉儲以在大約同一時間發生!這是愚蠢的。

  2. 很難在IDEA中運行所有單元測試而不是集成測試。

  3. 集成測試是一個巨大的痛苦。當集成測試失敗時,Idea實際上顯示了一個綠色條。 Grails給出的結果表明某件事情失敗了,但它沒有說明它是什麼。它說要查看測試報告......這迫使開發人員啓動他們的文件系統來搜索愚蠢的html文件。多麼痛苦。

然後,一旦你得到了html文件並點擊失敗的測試,它會告訴你一個行號。由於這些報告不在IDE中,因此您不能只點擊堆棧跟蹤即可找到該代碼行......您必須自己回去查找。 ARGGH!@!@!

也許人們忍受這一點,但我拒絕。測試不應該是這樣的痛苦。它應該是快速和無痛的,否則人們不會這樣做。

請幫忙。解決辦法是什麼? Rails而不是Grails?還有其他的東西嗎?我喜歡Grails框架,但他們從來沒有演示他們的測試的原因。他們有一個時髦的框架,但測試是痛苦的。

在過去的1.5個月中使用了Scala之後,被ScalaTest完全寵壞了......我無法回到這裏。

+0

+1沒有實際顯示測試的grails演示文稿。他們都在30分鐘內構建下一個推特或博客,並且測試總是停止。 – npiv 2011-04-24 17:19:30

回答

2

您可以在配置文件中設置該屬性:

grails.gorm.failOnError=true 

這將使其成爲全系統的默認保存(您可以用.save覆蓋(failOnError:如果你想FALSE))。

如果你只想在測試中使用這種行爲,你可以將它放在Config.groovy中特定的環境節中。我其實很喜歡這個項目的廣泛行爲。

我敢肯定,你可以在定義的範圍內打開/關閉failOnError,但我還沒有調查過如何去做(可能是一個很好的博客文章,我會更新這個如果我寫一個)。

我不確定你在IDEA中有什麼錯誤配置,但是當我的測試失敗時,它會顯示紅色條,我可以點擊堆棧跟蹤中的行並正確處理問題。最新版本的intellij甚至將大部分元類cruft摺疊起來,這在嘗試解決問題時並不有趣。

如果您還沒有這樣做已經生成您的項目,我想嘗試抹着現有.ipr/.iml/.iws/.idea文件,並運行此命令有Grails的重新配置:

grails integrate-with --intellij 

然後運行生成的.ipr文件。

+1

事實上,9.0.2中存在一個bug,導致了這個綠條問題。一旦我升級到9.0.3,它就起作用了。人物 ;) – egervari 2010-05-21 12:26:38

相關問題