目前正在搜索教程,解释和示例。 我尝试了不同的例子,并遇到了不同的错误。 我目前的错误是:
|错误编译错误编译[unit]测试:启动失败:
在我的测试报告中。它输出:
单元测试结果 - 摘要 没有执行任何测试。
我的“UserSpec.groovy”代码是这样的:
package newmyproject245
import grails.test.mixin.*
import spock.lang.Specification
@TestFor(User)
class UserSpec extends ConstraintSpecification {
def setup() {
Expectations.applyTo User
}
def cleanup() {
}
void testShouldDoNothing() {
Expectations.applyTo User
user."password is not blank"
user."password is not nullable"
user."name is not blank"
user."name is not nullable"
}
void testEventNameConstraints() {
Expectations.applyTo User
def user = new User()
user."name is not blank"
user."name is not nullable"
}
}
任何人都可以提供帮助。我是grails的新手。 谢谢!
除上述问题外, 当我在课程中省略 Contraints 时如下所示:
class UserSpec extends Specification {
我遇到了这个错误:
有人帮忙。再次,谢谢!|运行1单元测试... 1 of 1 |失败:initializationError(org.junit.runner.manipulation.Filter) | java.lang.Exception:没有找到匹配grails测试目标的测试 模式过滤器来自org.junit.runner.Request$1@12c27788 at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:35) 在org.junit.runner.JUnitCore.run(JUnitCore.java:138) |完成1个单元测试,1个在0m 0s失败 |错误运行测试时发生致命错误:非空属性引用瞬态值 - 必须在当前操作之前保存瞬态实例:newmyproject245.Order.product - > newmyproject245.Product;嵌套异常是org.hibernate.TransientPropertyValueException:非null属性引用瞬态值 - 必须在当前操作之前保存瞬态实例:newmyproject245.Order.product - > newmyproject245.Product(使用--stacktrace查看完整的跟踪)
答案 0 :(得分:0)
我已经得到了答案。请参阅代码以供参考:
<强> UserSpec.groovy 强>
package project101
import grails.test.mixin.TestMixin
import grails.test.mixin.support.GrailsUnitTestMixin
import spock.lang.Specification
/**
* See the API for {@link grails.test.mixin.support.GrailsUnitTestMixin} for usage instructions
*/
@TestMixin(GrailsUnitTestMixin)
@TestFor(User)
class UserSpec extends Specification {
def user
def setup() {
user = new User(firstName: 'FIRSTNAME', lastName: 'LASTNAME', address: 'Finland', username: 'user1', password: 'pass123', userType: 'ADMIN')
}
def cleanup() {
user = null
}
void "Test if User handles"() {
given:
setup()
when: "User field has null value"
user?.username = null
then: "Validation returns false"
user?.validate() == false
user?.errors?.hasFieldErrors('username') == true
}
}
并确保 测试环境的 dbCreate 为“create-drop”以避免此类错误。在 DataSource.groovy
中找到test {
dataSource {
pooled = true
dbCreate = "create-drop"
此致
谢谢! (^ _〜)