2012-05-28 32 views
1

我原來的問題是由this post完美的描述:我想跟進TDD:「測了一下,代碼有點」在Grails項目中,使用了easyb或斯波克,在的IntelliJ

  • 寫一個小的測試
  • 看着它失敗
  • 編寫足夠的代碼,使之成功
  • 看它成功
  • 重複

我正在使用IntelliJ中的Grails項目。如果所有我想要的是寫正常的JUnit測試,上面的帖子解決了一切:把一些測試代碼在

  • 團長/測試/單元
  • 「類的Xyz擴展GroovyTestCase的」類
  • 按Shift F10
  • JUnit的報告彈出內一兩秒鐘

的問題是,我想用非常酷「描述式英語」的測試設置之一,像easyb中或斯波克。

我該怎麼辦?從Grails爲我自動生成的Test類開始,然後將Spock的東西塞進它裏面會很神奇。顯然我不能使用「延伸」兩次。這是否給了我想要做的事情的要點?

​​
+1

再過幾天研究TDD:看起來在最後的「重複」之前還有另一個重要步驟。 「重構」。你編寫足夠的代碼來使測試成功,即使代碼很繁瑣。一旦測試成功,您就會回頭「查看代碼」,經常進行測試以確保您不會破壞它 – Bukov

回答

3

擴展spock類,而不是groovy的。您可以從列表in source code中選擇UnitSpec,ControllerSpec,IntegrationSpec和其他。 Spock將負責其餘的事情。

+0

請注意,使用Grails 2.0時,您不再使用'UnitSpec'等,而只使用'spock.lang.Specification '連同新的Grails測試註釋。 –

+0

謝謝@PeterNiederwieser! –

+0

謝謝你們兩位!你是對的。我將我的Grails測試模板更改爲「class Xyz extends Specification {}」,然後將其作爲JUnit測試運行。一切都像魔術一樣。 – Bukov

1

- 使用 「的grails安裝模板」

- 改變的測試模板沿的線的東西:

@[email protected] 

import grails.test.mixin.* 
import org.junit.* 
import spock.lang.Specification 

@TestFor(@[email protected]) 
class @[email protected] extends Specification { 

} 

-Write在斯波克測試代碼(或正常的JUnit代碼)

-IntelliJ->運行 - >編輯配置。添加JUnit類型的新配置。測試類型:<All in package/All in UnitTest directory/All in one UnitTest class/etc.>

- (快捷鍵:光標放在方法名或類名稱 - >按Ctrl移F10)


在我原來的問題: 現在回想起來,我是越來越hung-在該博客文章的「運行所有目錄」部分。當前的IntelliJ允許您在目錄或整個項目中運行所有JUnit測試。

一旦我明白了這一點,下一步就是意識到Spock測試是通過JUnit測試的。在test/unit目錄中創建一個「class Xyz extends Specification {}」類,用Spock代碼填充它,然後運行爲... JUnit。魔法!