首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JUnit和Spring Webflow

JUnit和Spring Webflow
EN

Stack Overflow用户
提问于 2015-11-27 01:05:46
回答 1查看 305关注 0票数 0

我在使用JUnit测试我的Spring webflow时遇到问题。

按照文档中的建议,我编写了一个扩展AbstractXmlFlowExecutionTests的测试类。

代码语言:javascript
复制
public class MyFlowTest extends AbstractXmlFlowExecutionTests {
    MockExternalContext context = new MockExternalContext();

    String workingDirectory = null;

    @Override
    protected FlowDefinitionResource        getResource(FlowDefinitionResourceFactory resourceFactory) {
        return resourceFactory.createFileResource("WebContent/flows/myflow-flow.xml");
    }

测试中的webflow继承自一个抽象的父webflow,它定义了一些全局转换。所以我尝试重写getModelResources来提供这个父webflow。但这根本不起作用。

代码语言:javascript
复制
@Override
protected FlowDefinitionResource[] getModelResources(FlowDefinitionResourceFactory resourceFactory) {
    FlowDefinitionResource[] flowDefResources = new FlowDefinitionResource[1];

    see below...

    return flowDefResources;
}

我的具体问题是:

当我对父流使用resourceFactory.createFileResource时,名称不正确,因此我收到了消息Unable to find flow 'main/parentflow' to inherit from的异常。

当我使用resourceFactory.createResource(String path, null, "main/parentflow"时,永远找不到定义流的.xml。异常打印路径并显示为FileNotFound,但该路径确实存在(将此路径复制并粘贴到编辑器-文件-打开works。

我在这里做错了什么?

在此之前,非常感谢您。

我使用的是spring-webflow-2.3.2和jUnit 4

EN

回答 1

Stack Overflow用户

发布于 2015-11-27 17:24:51

因此,我通过查看AbstractXmlFlowExecutionTests的源代码发现了问题:FlowDefinitionResourceFactory.createFileResource的工作方式与resourceFactory.createResource(String path, AttributeMap attributes, String flowID)不同。第二种是使用类加载器而不是简单的文件加载器。因此,解决方案是在类路径中提供XML-File,以便可以找到它。似乎不允许类加载器打开本地计算机上的任何文件。

我想我应该在maven构建中添加一个步骤,将所有的流定义复制到target/WEB_INF目录中,以便进行测试。

对我来说,这似乎是丑陋的,我不明白为什么createResource要使用这种方法。

也许有人能提出一个更好的解决方案?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33943910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档