spring - 在单元测试中初始化WebApplicationContext

标签 spring

我有一个实用方法,我想为其编写单元测试。由于该实用程序在 webapp 下运行,因此它旨在从 WebApplicationContext 获取 Spring bean。(以下代码未进行单元测试) Action bean类

private IUnitBiz unitBiz;
public UnitBean()
{
    unitBiz = CommonUtils.getBean(IUnitBiz.class);
}

在 CommonUtils.class 中

public static ApplicationContext getWebApplicationContext() {
        return FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());
    }

    public static <T> T getBean(Class<T> beanType) {
        return getWebApplicationContext().getBean(beanType);
    }

------------------在单元测试中----------------

在单元测试中它返回 null,我如何为我的单元测试初始化​​ WebApplicationContext 或 getBean? 当我新建action bean时,getBean方法返回null。

最佳答案

EasyMock可能是一个解决方案。

示例:

WebApplicationContext mockWebApplicationContext = EasyMock.createMock(WebApplicationContext.class);
MockServletContext mockServletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
                                    mockWebApplicationContext);

EasyMock.expect(mockWebApplicationContext.getServletContext()).andReturn(mockServletContext).anyTimes();

关于spring - 在单元测试中初始化WebApplicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14055803/

相关文章:

java - 如何在 Spring 将@Scheduled(cron) 与SpEL 一起使用?

java - 如何使resttemplate仅返回与发送的id有关系的类

java - BasicDataSource 无法解析为类型

java - 无需 Java 即可验证 Md5PasswordEncoder 哈希值?

java - 如何从 FeignClient 端点返回 LocalDateTime?

java - Spring Cloud Data Flow @EnableBinding 注解会破坏构造函数注入(inject)

json - 基于 Spring 安全角色的 Jackson @JsonIgnore 字段

spring - 以编程方式在 Magnolia 中创建 Assets

java - Spring:从 Web 应用程序线程子线程(来自 ThreadPool)访问请求( session )作用域 Bean

java - 随机找不到类路径资源