java - 以编程方式实例化具有 Spring 生命周期注释的类的对象

标签 java spring unit-testing

我正在测试一组类,这些类最终将用于在 Spring 上下文中创建 bean。我正在使用 JUnit 进行测试。我想确保当在测试中以编程方式实例化这些类的实例时,可以正确调用生命周期方法和 @Required setter。我知道我可以通过普通的旧java代理来做到这一点,但我想知道Spring(或其他地方)是否存在可以帮助我的特定工具。

我想写一些类似的东西

X x = ???.newBeanInstance(X.class); 
x.setFoo(foo); 
x.setBar(bar);
x.$postConstruct(); 
... 
x.$preDestroy();
x = null;

另一个不太理想的选项是仅创建上下文的 XML 并使用它来初始化实例。

最佳答案

如果您启动整个上下文,则可以使用 spring-test 包及其 @ContextConfiguration

如果你想手动处理事情,你就得靠自己了(几乎)。如果您有字段注入(inject),则可以使用ReflectionTestUtils来设置依赖项。但除此之外,您:

  • 使用new X()实例化对象
  • 调用设置者
  • 调用初始化方法(你应该知道它是哪一个)
  • 最后调用销毁方法

关于java - 以编程方式实例化具有 Spring 生命周期注释的类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10286893/

相关文章:

java - Micronaut:在 Spock 中模拟工厂创建的 Bean

java - 无法将 MultipartEntityBuilder 与 @ModelAttribute 粘合在一起

java - 关于 instanceof 工作的问题

java StreamTokenizer wordChars() 和 nextToken()

java - 在android中的SQLite数据库中保存用户名和密码的程序

java - init-method 的确切替代方案(基于 Java)

javascript - 调试 Karma 单元测试

iphone - 逻辑单元测试崩溃

c++ - 单元测试高度模板化的库

java - 线性数据结构的对称性和不对称性