我调试了我的 Spring Webflow 测试以找出问题的第一部分:当您有一个文件名与流的 id 不同的流时('commons-flow.xml' with id=' commons') 然后仅使用 resourceFactory.createFileResource(pathToFlowFile) 不起作用,因为假定 id 是文件名。
有一种方法可以覆盖 id,resourceFactory.createResource(pathToFlowFile, attributesMap, overrideId)
但是,这使用 Classloader 来解析文件,而 createFileResource 似乎使用了不同的方法。
我无法弄清楚我应该如何让 Classloader 识别流文件。我检查了它的类路径,它只有 JAR 依赖项,然后动态创建了 target/classes 和 target/test-classes 文件夹。没有参考我的项目。
这是一个 Maven 项目,我从项目根到流的路径类似于:
src/main/webapp/WEB-INF/flows/<flow-folder>/<flow-filename>.xml
我见过webflow 测试,无法找到重申我已经发现的流模型,但由于某种原因,我遇到了其他似乎没有的 Classloader 问题。
在我看到人们成功引用流文件的地方,他们似乎要么与项目根目录相关,要么与 src/main/webapp 的 WebContext 相关。
我正在使用 Eclipse 中的运行配置以及 maven 测试目标运行 JUnit 测试。
我可以为 Eclipse 中的运行配置配置自定义类路径,以包含我定义为 pathToFlowFile 的相对路径的父文件夹。
然而,这对 Maven 一点帮助都没有,它在执行测试目标时仍然存在类加载器/类路径问题。