spock集成测试用例中的app真实路径问题

时间:2014-10-28 07:51:03

标签: grails testing integration-testing spock realpath

我正在处理使用pdf生成jasper的操作的集成测试用例。那个碧玉有一个sub-report。要获取子报告(abc.jasper中的web-app/reports/)的路径,我首先使用

获取真实路径
request.getSession().getServletContext().getRealPath("")

提供/home/mkb/workspace/my-project/web-app,然后连接/reports/abc.jasper以获取父jasper报告中的子报告。这在运行应用程序(run-app)时工作正常。

但是在测试(test-app)上面的代码给出了/home/mkb/workspace/my-project/target/work/scriptCache,因此我得到了

net.sf.jasperreports.engine.JRException: Resource not found at : 
/home/mkb/workspace/my-project/target/work/scriptCache/reports/abc.jasper

如何在测试用例中设置或修复此路径问题?(Grails 2.3.9)

1 个答案:

答案 0 :(得分:2)

请使用ServletContextHolder类静态方法getRealPath()来获取真实的路径.g: -

ServletContextHolder.servletContext.getRealPath('/')

此代码将提供应用程序的web-app文件夹的路径。