如何在 JSF 1.2 上使用 JSFUnit 获取 Spring IoC Bean

Posted

技术标签:

【中文标题】如何在 JSF 1.2 上使用 JSFUnit 获取 Spring IoC Bean【英文标题】:How to get a Spring IoC Bean using JSFUnit on JSF 1.2 【发布时间】:2016-03-08 16:00:44 【问题描述】:

所以我的应用程序在 JSF 1.2 上运行,并使用 Spring Beans IOC 根据 Spring Context XML 配置将类注入到 Backing Beans。

我正在使用 JSFUnit 进行测试,我可以浏览页面并断言我的 Backing Bean 值,但是我还无法访问任何注入的 bean。

我知道 JSFUnit 被宣传做白盒测试,但到目前为止我只能做类似于用 Arquilian 进行的容器内测试的东西。

一旦我打开与支持 Bean 相关的页面,谁能帮助我访问我拥有的业务对象(由 Spring 注入)?谢谢!

【问题讨论】:

【参考方案1】:

我找到了答案,一旦你导航到你的页面,你就可以在你的测试用例中调用这个方法,它只是通过 bean 名称返回 bean,它太简洁了:

@SuppressWarnings("unchecked")
public static <T> T findBean(String beanName) 
    FacesContext context = FacesContext.getCurrentInstance();
    return (T) context.getApplication().evaluateExpressionGet(context, "#"+beanName+"", Object.class);

现在 JSFUnit 变得更加有用了!

【讨论】:

以上是关于如何在 JSF 1.2 上使用 JSFUnit 获取 Spring IoC Bean的主要内容,如果未能解决你的问题,请参考以下文章

在同一个 Tomcat 服务器上部署 JSF 1.2 和 JSF 2.0 应用程序

jsf 1.2和jsf 2.0之间的区别

从 JSF 1.2 迁移到 JSF 2.0 后,每次导航都出现 ViewExpiredException

在 JSF 1.2 中通过 EL 调用带参数的方法

在 JBoss 5.1.1 上将 JSF 从 1.2 升级到 2.1

在 JSF 1.2 中显示或隐藏 HTML DIV