我有一组使用SpringJUnit4ClassRunner
. 我正在尝试使用 maven surefire 并行运行这些。但是,我注意到代码在进入同步块之前是阻塞的CacheAwareContextLoaderDelegate.loadContext()
。
有没有办法绕过这个缓存?我试过这样做,但似乎有更多的共享状态而不仅仅是缓存本身,因为我的应用程序在 Spring 代码中死锁了。或者可以通过某种方式在映射键而不是整个映射上同步来使同步更加细粒度?
我并行化测试的动机是双重的:
- 在一些测试中,我用模拟替换了 bean。由于 mock 本质上是有状态的,因此我必须为每个使用
@DirtiesContext
. - 在其他测试中,我只想部署 Jersey 资源的一个子集。为此,我指定了 Spring 配置类的一个子集。由于 Spring 将
MergedContextConfiguration
用作上下文缓存中的键,因此这些测试将无法共享 ApplicationContexts。