【问题标题】:Griffon resource loading differences between run-app and test-apprun-app 和 test-app 之间的 Griffon 资源加载差异
【发布时间】:2013-09-12 09:38:17
【问题描述】:

我对 Griffon 还很陌生,并且对 Grails 有一些经验。

我从资源目录加载文件时遇到问题。

我使用的是 Griffon 1.4.0 版。

当我运行griffon run-app 时,以下代码(在服务内)可以正常工作:

URL resource = getResourceAsURL('schema.xsd')
assert resource != null : "schema cannot be located"

当我运行griffon test-app 时,同样的代码会产生一个断言错误,因为返回的URL 为空。与getResourceAsStream() 的行为相同。

这发生在上述服务的单元测试中。

我把文件放在./griffon-app/resources

我做错了什么?是否必须将所有资源从生产环境复制到某个测试资源文件夹,是否必须编辑构建配置?

提前致谢!

编辑如下所示,我在 griffon-projects 问题跟踪器中提交了bug report

【问题讨论】:

  • 什么版本的狮鹫?
  • 我在帖子中添加了 Griffon 版本。
  • 你在哪里打电话getResourceAsURL?我试图想出一个失败的例子
  • 我从服务内部运行它,从它的单元测试中调用服务。

标签: file-io groovy classloader griffon


【解决方案1】:

araxn1d 是正确的,在集成模式下运行测试会给你正确的答案,因为完整的应用程序在测试运行之前被引导。现在,运行这种测试(依赖于类路径中可用资源的单元测试)会遇到问题,因为类路径设置不正确。执行以下命令

griffon -Dgriffon.cli.verbose=true test-app --unit --compileTrace=true

将输出所有类路径。在那里您可以看到resources 目录指向$USER_HOME/.griffon/1.4.0/projects/<project_name>/resources。如果您检查该目录,您会在griffon-app/resources 中找到您要查找的文件。这意味着测试类路径没有准确配置,因为它应该是$USER_HOME/.griffon/1.4.0/projects/<project_name>/resources/griffon-app/resources。这显然是一个错误,很可能在$GRIFFON_HOME/scripts/_GriffonClasspath.groovy 脚本中找到。你能提交一张 JIRA http://jira.codehaus.org/browse/griffon 票吗?谢谢!

【讨论】:

    【解决方案2】:

    您应该运行 test-app 来运行您的单元测试。在这种情况下,您应该模拟任何引用真实文件,否则您应该实施集成测试。请参阅Griffon Testing集成测试与单元测试的不同之处在于您可以完全访问测试中的 Griffon 应用程序。

    【讨论】:

      猜你喜欢
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 2021-12-22
      • 2020-07-20
      • 2017-08-06
      • 2017-11-18
      • 2012-12-12
      相关资源
      最近更新 更多