【问题标题】:Grails build-test-dataGrails 构建测试数据
【发布时间】:2010-05-11 02:06:54
【问题描述】:

是否建议使用 build-test-data 插件来加载应用程序的引导(种子/初始)数据。插件教程在http://bitbucket.org/tednaleid/grails-test-data/wiki/Home 非常好,但只提到了加载测试数据。有一个关于 TestDataConfig 的部分,它允许设置默认数据。但是,如果数据需要以更大规模、具有复杂关系的方式持续存在,这是一个可行的选择吗?\ 谢谢。

【问题讨论】:

    标签: grails fixtures


    【解决方案1】:

    测试数据是插件的主要重点,但我将它用于各种数据加载情况,包括将数据引导到新系统中。

    您唯一需要注意的是,该插件在设计上会填补您未提供的所需数据中的任何漏洞。这意味着您应该指定您实际想要特定值的所有内容(或将其放在您提到的 TestDataConfig 中)。如果你不给 build-test-data 一个值,它会编造一些东西,这可能是你不想要的东西。

    围绕 buildLazy 新增的功能可以更轻松地连接到您可能在 BootStrap 配置中拥有的现有对象图。

    【讨论】:

    • Ted.. 谢谢您的建议.. 不可避免地,我必须使用该插件,因为它可能是进行集成测试的最佳方式。但是,在 Jared 的建议下,我一直在使用您的 runscript (bitbucket.org/tednaleid/grails-run-script/changeset/…) 构建我的数据。目前它工作得很好,除了我无法访问您在博客中提到的服务。我包含了这个包(nimble 插件的一部分:import grails.plugins.nimble.core.*)并定义了像 def userService 这样的服务。当我调用这个服务的一个方法时,我得到一个错误
    • 错误执行脚本交互:没有这样的属性:类的 userService:Script1 应用程序上下文关闭...应用程序上下文关闭。你能帮我吗..我最终会迁移到你的所有这些插件..非常感谢..
    • @bsreekanth 我猜你没有正确实例化你的 userService,听起来好像它没有在你的脚本中定义。您可以通过以下方式向 spring 上下文询问类似您的服务的 bean:def userService = grailsApplication.mainContect.getBean("userService")。如果 grailsApplication 不在范围/定义中,您可以从 ApplicationHolder 类中获取一个。 HTH
    【解决方案2】:

    这取决于您的数据。如果您只需要管理员帐户信息、类别列表等一些内容,它应该可以正常工作。如果您使用初始种子数据测试您的应用程序并且一切正常,我会使用它。对于大型或复杂的数据导入,我会使用 gant 脚本来创建和保存所有域对象。例如,我正在开展一个项目,该项目需要我将数据从遗留数据库移到 Grails 应用程序中。为此,我运行了一个脚本,该脚本使用 JDBC 调用从遗留数据库中获取所有旧数据。然后我根据这些数据创建并保存新的域对象。有关如何运行可以访问包括 Gorm 在内的整个 Grails 上下文的脚本的示例,请参阅this

    【讨论】:

    • 感谢您的帮助..脚本运行良好,除了我无法访问服务方法(如下所述)..希望作者帮助我..再次感谢
    猜你喜欢
    • 2013-11-26
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 2014-01-30
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多