我对使用grails有点新意,所以如果有明显的答案,请原谅我。我一直在阅读有关在创建新控制器时如何自动创建单元测试的文档。从我在网上和书中看到的,控制器测试类名称末尾附加了“test”。在\ test \ unit \目录中使用grails 2.3.1创建了StoreControllerSpec.groovy 因为我有
@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
}
}
我遇到的问题是,当运行test-app时,它会尝试运行单元测试但是没有输出任何内容并且没有标记为失败?
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 :(得分:1)
我设法通过改变测试的编写方式来解决问题,例如
void "test Something"() {
controller.index()
expect:
"Welcome to the gTunes store!" == response.text
}
这是因为grails现在默认使用spock测试框架
答案 1 :(得分:1)
你走了:
grails 2.3.x默认使用spock框架进行测试
//控制器类
类DomainListController {
def index() {
redirect (action:"list")
}
def list() {
render "hello"
}
}
//测试类
@TestFor(DomainListController) class 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负责控制器的嘲弄。您可以很好地访问一些关键字,如controller,contoller.params,controller.request,controller.response,而无需实例化控制器。
- >响应对象是GrailsMockHttpServletResponse的一个实例(来自包org.codehaus.groovy.grails.plugins.testing),它扩展了Spring的MockHttpServletResponse类,并提供了许多有用的方法来检查回应的状态。
- > expect:是预期结果
希望这可以帮助你:) 欢呼 - Mothi
答案 2 :(得分:0)
在以前版本的grails中,包含测试的类必须以“Tests”结尾。可能值得尝试吗?
例如。
class StoreControllerSpecTests extends Specification