我最近在我目前的项目中担任自由职业者.我投入的一件事就是失败的詹金斯建筑(从4月8日开始失败,在我开始前一周).
一般来说,您可以在日志中看到一系列DI问题.我做的第一件事就是从相同的应用程序上下文开始,以相同的方式使所有测试工作.他们还实施了自己的"嘲弄"的东西,似乎无法正常工作.在与开发者讨论后,我建议开始使用Springockito.(对于某个模块,他们需要模拟他们的集成测试 - 遗留原因,无法更改)
无论如何,事情之后开始失败了.在测试中被嘲笑的很多豆子都没有被嘲笑,或者没有找到或者其他什么.通常,它会在加载应用程序上下文时失败,说明缺少一个或另一个bean.
我尝试了不同的东西和不同的方法,但最后,只有我最担心的事情才能起作用:将@DirtiesContext添加到每个测试中.现在,maven构建开始再次变为绿色,测试开始做他们应该做的事情.但是我每次都在重新加载Spring上下文,这需要时间 - 这都是相对的,因为上下文加载大约1-2秒.
这个故事的一个侧面是他们已经升级到Hibernate 4,因此升级到Spring 3.2.以前,他们使用的是旧版本的Spring 3.当时所有测试都在进行,并且没有必要使用@DirtiesContext.
现在,让我最担心的是,我无法立即想到对这种奇怪行为的解释.通过启动使用@Autowired bean的测试,几乎可以看出Springs上下文变脏了.并非所有测试都使用Mocks,因此不可能.这听起来对任何人都很熟悉吗?有没有人与Spring(最新版本)Spring的集成测试有相同的经验?
在Stackoverflow上,我找到了这张票:如何测试'脏'弹簧应用程序上下文? 它似乎几乎总结了我所看到的行为,但关键是我们是自动装配服务/存储库/ ......,而且我们在这些类上没有任何设置器.
有什么想法吗?
谢谢!