我在类加载器和规格方面遇到了一些奇怪的问题.2.8.7+。因为 类加载器看似由sbt管理,我特此在这里询问sbt的行为。
我已经提出了一个示例项目,展示了Github手头的问题
Shadowfiend/specs2-concurrent-boom-boom 。如上所述,问题在于
如果我运行all project1/test project2/test
,project2最终可以使用线程上下文类加载器
这是ClasspathFilter
引用project1而不是project2,反之亦然。
在某些情况下,项目1的工作人员将参考项目2的ClasspathFilter
和
项目2的工作人员将同时参考项目1 ClasspathFilter
。
我在一些地方插入了一些断点,看到只有一个ForkJoinPool
实际上是为specs2生成的,即使在运行all project1/test project2/test
时,
即使使用fork:= true。不是100%确定该池中的所有线程是否将依次结束
与相同的类加载器父或者什么,但似乎它可能是
问题的根源?
我在这里有点超出我的深度,但是我会很感激 产生的sbt和测试框架中的类加载器之间的预期交互 由sbt。
答案 0 :(得分:1)
这已在Specs2 4.0.1中修复。