2013-11-21 110 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