我有一个 CDI Web 应用程序,它有一个 ServletContextListener 在启动时初始化一些东西。
在那个 ServletContextListener 中,这(除其他外)发生了:
@Inject
Config config;
public void contextInitialized(ServletContextEvent event) {
....
config.init(....)
}
这工作得很好,因为这确保在其他 CDI bean 实例化之前执行 init(例如 App,它也注入 Config 本身)
但是,我无法弄清楚如何为单元测试实现这个逻辑。使用 jglue 的 CDI-Unit,我可以在我的测试类中执行此操作:
@Inject
Config config;
@Inject
App application;
但是当我运行测试时,我不断遇到问题,因为 App 中的 @PostConstruct 需要已经启动 Config。那么,我怎么可能及时调用 Config.init() 方法呢?