当前位置: 首页 > 知识库问答 >
问题:

使用Grails对域类进行单元测试

冯通
2023-03-14

目前正在搜索教程、解释和示例。我试过不同的例子,遇到了不同的错误。我当前的错误是:

|错误编译错误编译[单元]测试:启动失败:

在我的测试报告中。它输出:

单元测试结果-摘要未执行测试。

我的“用户pec.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"
    }
}

有人能帮忙吗。我是圣杯新手。谢谢

除上述问题外,当我在课堂上省略了如下所示的禁忌:

class UserSpec extends Specification {

我发现了这个错误:

|运行1单元测试...1 of 1|失败:初始化错误(org.junit.runner.manipulation.过滤器)|java.lang.异常:没有找到匹配grails测试目标模式过滤器的测试org.junit.runner.请求$1@12c27788在org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:35)org.junit.runner.JUnitCore.run(JUnitCore.java:138)|完成1单元测试,0m0中失败|错误运行测试的致命错误:No-null属性引用瞬态值-瞬态实例必须在当前操作之前保存:newmyProject 245。Order.product-

来人帮忙。再次,谢谢!

共有1个答案

奚英朗
2023-03-14

我已经得到了答案。参考代码:

用户pec.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”,以避免此类错误。在数据源中找到。groovy公司

test {
        dataSource {
            pooled = true
            dbCreate = "create-drop"

当做

谢谢(^_~)

 类似资料:
  • 我有这样一个简单的课程: 我想为它写一个测试,下面是一个框架: ErrorLogger类中的logger是由StaticLoggerBinder提供的,所以我的问题是-如何让它工作,以便那些检查“1*logger.error(u作为字符串)”可以工作?在ErrorLogger类中,我找不到一种恰当的方式来嘲笑那个记录器。我曾考虑过反射,并以某种方式访问它,此外,mockito注入也有一个想法(但如

  • 我正在尝试对<code>java进行单元测试。lang类。 背景:到目前为止有效的方法 这不是真正的标准,但是将 } 中 (在 Ubuntu 上)中提供的源代码和 rt.jar 中提供的类复制到 中非常简单,然后 JaCoCo maven 插件可以看到它们并为某些类生成合适的输出。 例如,我得到了一些关于来源的报道。 但是我无法覆盖< code>java.lang中的类。调用< code>Byte

  • 问题内容: 我有几个DAO对象,这些对象用于从数据库中检索信息,我 确实 想为它们编写一些自动化测试,但是我很难弄清楚该怎么做。 我正在使用Spring 来运行实际查询(通过准备好的语句)并将结果映射到模型对象(通过类)。 如果要编写单元测试,则不确定如何/应该模拟对象。例如,由于只有读操作,因此我将使用实际的数据库连接,而不模拟jdbcTemplate,但我不确定那是正确的。 这是批处理中最简单

  • 我有DaoImpl类: 我的测试是: 测试是成功的,但是当我运行具有覆盖率的junit测试时,它显示方法没有被覆盖,因此我的整体单元测试行覆盖率低于要求。我们能涵盖那部分吗?如果是,我们怎么做?谢了。

  • 找到了以下场景的部分答案,但需要进一步澄清。 有下列情况: 用java编写的域类 我想做的事情: 创建一个grails应用程序,它可以执行以下操作: 使用java域类作为grails域类 通过GORM将java域类映射到DB 能够从groovy域类创建java域类,以便能够将其发送到java服务器进行处理,然后接收java类响应并将其转换为groovy类,以便使用GORM存储在DB中映射 基本上有

  • 问题内容: 我选择的数据库是MongoDB。我正在编写一个数据层API,以从客户端应用程序中抽象实现细节- 也就是说,我实质上是在提供一个公共接口(一个充当IDL的对象)。 我正在以TDD方式测试自己的逻辑。在每个单元测试之前,调用一个方法来创建数据库单例,此后,当测试完成时,将调用一个方法来删除数据库。这有助于促进单元测试之间的独立性。 几乎所有单元测试(即 执行上下文查询 )都需要先进行某种插