2012-08-30 72 views
0

我有rails 12應用程序的12000行代碼的黃瓜功能。 我正在運行所有功能,以獲取應用程序代碼的代碼覆蓋範圍,如控制器,模型,幫助器,查看頁面代碼。 要運行所有功能,需要4個小時。 我仍然沒有獲得100%的代碼覆蓋率,我的問題是如何通過黃瓜功能獲得100%的代碼覆蓋率,以及如何將所有功能的運行時間從4小時縮短到最短可行時間。黃瓜功能需要時間來運行

回答

2

我敢肯定有很多關於普遍加快黃瓜的網頁,例如http://aaron-jensen.com/post/5019042852/speed-up-your-rspec-cucumber-run就是其中之一。

你可能需要看譜,因爲什麼使您的黃瓜慢可能是特定於您的代碼,只有你可以看到這一點。

記住,集成測試的確有正在緩慢的聲譽,因爲他們正在測試的全棧(這就是點)。這就是爲什麼人們經常進行徹底的單元測試而不是徹底的集成測試,因爲在集成層面測試所有東西實在太慢了。

關於獲得更好的覆蓋,如果您使用的是覆蓋報告,告訴你有多少被覆蓋,它會告訴你其中線不包括它的HTML報告,您可以定製測試了點。

但是,它實際上可能有一些事情你不能在用戶界面測試,因爲他們在那裏的魯棒性 - 你不要指望在實踐中發生的事。也就是說,但你的處理只是在他們的行爲是出於意外的原因,或者是由於未來的代碼更改。在這些情況下,單元測試可能是涵蓋這些代碼行的唯一方法。

+0

謝謝,馬修很好的解釋。 – Trupti

+0

我們不能使用黃瓜功能獲得100%的代碼覆蓋率嗎?實際上,我的客戶希望rcov報告中出現的所有代碼行都是綠色的,這是指代碼被功能覆蓋,目前我獲得70%的代碼,如紅色,即功能不涵蓋該代碼。那麼,告訴我這是測試代碼覆蓋的正確方法嗎? – Trupti

+0

70%實際上是一個低代碼覆蓋率。你會發現得到的越多,獲得剩餘點的難度就越大,最後幾個百分比往往是最難的。當我說可能會有線路不能在集成測試中覆蓋時,這可能是一個例外情況,佔一兩個百分點。 –

0

當然,運行該功能需要時間,因爲它實際上模擬了用戶交互。 可避免重新指定要使用

cucumber path/to/file.feature:33 

這裏33指定文件,您想運行特定情景的行數來運行確切的情況運行相同的場景。

+0

我不希望運行特定的功能,作爲獲取coverage.features文件夾中同時運行所有功能後生成的應用程序代碼需要覆蓋。 – Trupti