2

我对 Griffon 相当陌生,并且对 Grails 有一些经验。

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

我正在使用 Griffon 版本 1.4.0。

当我运行griffon run-app以下代码(在服务内)以获取 XML 文件的位置时,工作正常:

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

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

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

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

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

提前致谢!

按照下面的建议进行编辑我在 griffon-projects 问题跟踪器中提交了错误报告。

4

2 回答 2

1

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

于 2013-09-12T12:03:03.500 回答
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票吗?谢谢!

于 2013-09-12T20:23:38.747 回答