当前位置: 首页 > 知识库问答 >
问题:

Spring 3.2:@scope(“request”)的单元测试不再有效

郎和志
2023-03-14
@Component
public class MockRequestBeanFactoryPostProcessor implements BeanFactoryPostProcessor {

public void postProcessBeanFactory(
        ConfigurableListableBeanFactory beanFactory) throws BeansException {

    beanFactory.registerScope("request", new RequestScope());
    MockHttpServletRequest request = new MockHttpServletRequest();
    ServletRequestAttributes attributes = new ServletRequestAttributes(request);
    RequestContextHolder.setRequestAttributes(attributes);
}

共有1个答案

郎鹤龄
2023-03-14

BeanFactoryPostProcessor有缺陷,它只运行一次,因此只有单个线程才会有(不可重用的)mockHttpServletRequest

将创建请求并将其存储在RequestContextHolder中的代码移动到@Before批注方法中,并在@After批注方法中清除RequestContextHolder

@Before
public void init() {
    MockHttpServletRequest request = new MockHttpServletRequest();
    ServletRequestAttributes attributes = new ServletRequestAttributes(request);
    RequestContextHolder.setRequestAttributes(attributes);
}

@After
public void cleanUp() {
    RequestContextHolder.resetRequestAttributes();
}

您仍然需要BeanFactoryPostProcessor来注册RequestScope

 类似资料:
  • 问题内容: 我正在试验JSF和Primefaces(JSF 2.0.2,PrimeFaces 3.0.5,Spring 3.0.0)。看来我无法从xhtml页面访问托管bean,例如 该请求从命令链接对bean方法,服务的调用开始,并返回页面。我可以在服务器控制台Bean中看到服务方法已执行。当我尝试使用上述bean属性时,我什么也没看到。但是,我能够访问用于用户会话管理的会话作用域bean。 抱

  • 为什么在STS中运行单元测试是有效的,而在bash中运行mvn测试会产生错误。Groovy库位于类路径中。我也很好奇mvn测试与spock测试有何不同。mvn测试不能拿起斯波克测试吗? pom.xml

  • Android Studio 1.1 添加了单元测试支持,详细请看 Unit testing support。本章的其余部分描述的是 “instrumentation tests”。利用 Instrumentation 测试框架可以构建独立的测试 APK 并运行在真实设备(或模拟器)中进行测试。

  • 英文原文:http://emberjs.com/guides/testing/unit/ 单元测试用于测试代码的一个小片段,确保其功能正常。与集成测试不同,单元测试被限定在一个范围内,并且不需要Ember应用运行。 全局 vs 模块 过去如果没有作为一个全局变量加载整个Ember应用,要对应用进行测试非常困难。通过使用模块(CommonJS,AMD等)来编写应用,可以只加载被测试的部分,而不用将其

  • 单元测试涉及测试软件应用程序的每个单元或单个组件。这是第一级软件测试。单元测试的目的是验证单元组件的性能。 单元是软件系统的单个可测试部分,并在应用程序软件的开发阶段进行测试。 此测试旨在测试隔离代码的正确性。单元组件是应用程序的单独功能或代码。白盒测试方法用于单元测试,通常由开发人员完成。 在测试级别层次结构中,单元测试是在集成和其他剩余测试级别之前完成的第一级测试。它使用模块进行测试,减少了等

  • 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如 C 语言中单元指一个函数,Java 里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进