2013-11-21 72 views
0

我對使用grails有點新,所以請原諒我,如果這有一個明顯的答案。我一直在閱讀有關如何在創建新控制器時自動創建單元測試的文檔。從我在網上和書本上看到的,控制器測試類名稱在最後附加了「測試」。使用Grails 2.3.1在它創建StoreControllerSpec.groovy 的\測試\單位\目錄下,我有grails如何創建單元測試

@TestFor(StoreController) 
class StoreControllerSpec extends Specification { 

def setup() { 
} 

def cleanup() { 
} 

void testSomething() { 
\\ added to see if the test works 
controller.index() 
assert 'Welcome to the gTunes store!' == response.text 
} 
} 

我遇到的問題是,在運行測試應用程序時,它會嘗試運行單元測試,但什麼都不輸出,並且沒有標記爲失敗?

grails> test-app 
| Running without daemon... 
| Compiling 1 source files 
| Compiling 1 source files. 
| Running 1 unit test... 
| Completed 0 unit test, 0 failed in 0m 4s 
| Tests PASSED - view reports in 

回答

0

在以前的grails版本中,包含測試的類必須在「測試」中結束。值得嘗試嗎?

例如。

class StoreControllerSpecTests extends Specification 
+0

遺憾沒有運氣,我改名的類,它也做了同樣的事情 – user2168435

1

我設法改變測試是怎麼寫的如來解決這個問題

void "test Something"() { 
controller.index() 
expect: 
"Welcome to the gTunes store!" == response.text 
} 

這是因爲Grails的現在默認使用斯波克測試框架

+0

右鍵 - 斯波克測試方法至少需要一個帶標籤的塊,請參閱https://code.google.com/p/spock/wiki/SpockBasics –

1

在這裏你去:

grails 2.3.x默認使用spock框架進行測試

//控制米勒類

類DomainListController {

def index() { 
    redirect (action:"list") 
} 

def list() { 
    render "hello" 
} 

}

// Test類

@TestFor(DomainListController) 類DomainListControllerSpec延伸規格{

def setup() { 
} 

def cleanup() { 
} 

void "test something"() { 
} 

//test method to test index() of DomainListController 
def void testIndex() { 
    controller.index()    
    expect: 
    response.redirectedUrl == 'domainList/listll' 
} 

//test method to test list() of DomainListController 
def void testList() { 
    controller.list()  
      expect: 
    response.text == "hello" 
} 

}

- > @TestFor mixin負責控制器模擬。您可以非常好地訪問一些關鍵字,如控制器,contoller.params,controller.request,controller.response,而無需實例化控制器。

- >響應對象是一個GrailsMockHttpServletResponse(來自org.codehaus.groovy.grails.plugins.testing包)的一個實例,它擴展了Spring的MockHttpServletResponse類,並有許多有用的方法來檢查響應的狀態。

- >期待:是預期的結果

希望這有助於你:) 歡呼 - Mothi