GRAILS 2.4.4:如何只运行单元测试,或者如何修复生成的集成测试?
GRAILS 2.4.4: how to run unit tests only, or how to fix the generated integration tests?
对于 grails 2.4,当您创建一个控制器时,它会创建一个单元测试 class 例如:
@TestFor(SessionService)
class SessionServiceSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test something"() {
}
}
因此您创建了 20 个控制器,并获得 20 个测试 classes。
当您尝试运行 grails test-app 时,它失败并出现以下错误:
java.lang.Exception:
No tests found matching grails test target pattern filter from org.junit.runner.Request
它永远无法运行我们的集成测试。
因此,Grails 为您创建的测试并非开箱即用。
我们可以删除所有已创建的测试规范 classes,但是如果我们想编写它们,我们有点希望它们准备就绪。
- 有没有办法运行我们的集成测试,而不运行单元测试(已损坏)或:
- 有没有办法修复测试,以免他们摔倒?有人发布了添加一个有效的 when/then,但我们不知道该放什么,因为我们尝试过的仍然会产生相同的异常。
遗憾的是 Grails 没有告诉您哪些测试或 class 抛出了这个异常。
我觉得这个论点很奇怪。当您创建控制器时,默认情况下会根据模板为其创建单位规范,您可以根据需要轻松定制该模板。
为你做。现在回答你的问题:
是的,有一种方法可以只进行 运行 集成测试。
grails test-app integration:
使用 install-templates
后,将 src\templates\testing
下的 Controller.groovy
模板修改为
喜欢:
@artifact.package@import grails.test.mixin.TestFor
import spock.lang.Specification
/**
* See the API for {@link grails.test.mixin.web.ControllerUnitTestMixin}
* for usage instructions
*/
@TestFor(@artifact.testclass@)
class @artifact.name@ extends Specification {
def setup() {
}
def cleanup() {
}
void "test something"() {
expect:
1 == 1
}
}
当 运行 时,这不会使您的测试失败,但它会破坏
的全部目的
writing failing test -> modify code -> fixing test approach
测试驱动开发。我宁愿实施一个失败的测试,然后在控制器中编写最少的逻辑来通过测试。
对于 grails 2.4,当您创建一个控制器时,它会创建一个单元测试 class 例如:
@TestFor(SessionService)
class SessionServiceSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test something"() {
}
}
因此您创建了 20 个控制器,并获得 20 个测试 classes。
当您尝试运行 grails test-app 时,它失败并出现以下错误:
java.lang.Exception:
No tests found matching grails test target pattern filter from org.junit.runner.Request
它永远无法运行我们的集成测试。
因此,Grails 为您创建的测试并非开箱即用。
我们可以删除所有已创建的测试规范 classes,但是如果我们想编写它们,我们有点希望它们准备就绪。
- 有没有办法运行我们的集成测试,而不运行单元测试(已损坏)或:
- 有没有办法修复测试,以免他们摔倒?有人发布了添加一个有效的 when/then,但我们不知道该放什么,因为我们尝试过的仍然会产生相同的异常。
遗憾的是 Grails 没有告诉您哪些测试或 class 抛出了这个异常。
我觉得这个论点很奇怪。当您创建控制器时,默认情况下会根据模板为其创建单位规范,您可以根据需要轻松定制该模板。
为你做。现在回答你的问题:
是的,有一种方法可以只进行 运行 集成测试。
grails test-app integration:
使用
install-templates
后,将src\templates\testing
下的Controller.groovy
模板修改为
喜欢:
@artifact.package@import grails.test.mixin.TestFor
import spock.lang.Specification
/**
* See the API for {@link grails.test.mixin.web.ControllerUnitTestMixin}
* for usage instructions
*/
@TestFor(@artifact.testclass@)
class @artifact.name@ extends Specification {
def setup() {
}
def cleanup() {
}
void "test something"() {
expect:
1 == 1
}
}
当 运行 时,这不会使您的测试失败,但它会破坏
的全部目的writing failing test -> modify code -> fixing test approach
测试驱动开发。我宁愿实施一个失败的测试,然后在控制器中编写最少的逻辑来通过测试。