我正在为Play 1.x应用编写单元测试,并使用Mockito轻松创建模拟实例。我正在开发模式下运行,因此我不必经常重启应用程序。
问题出现在我更改代码时,重新运行我的单元测试而不重新启动Play应用程序。我得到以下异常:
A java.lang.ClassCastException has been caught, Cannot cast services.MyService$$EnhancerByMockitoWithCGLIB$$12cee5a2 to services.MyService
当我重新启动te app并重新运行测试时,所有这些都执行正常,但每次重启都需要几分钟。有什么可以做的吗?
答案 0 :(得分:0)
使用Play时这是一个已知问题,lib类加载器保持不变,而每次重新加载时更改了开发代码,这会导致缓存反射相关内容的库出现问题, CCE
您必须通过覆盖默认配置来禁用类缓存,请参阅完整的documentation。
我们的想法是,在您的测试代码库中,创建一个具有以下限定名称org.mockito.configuration.MockitoConfiguration
的类,该类将扩展org.mockito.configuration.DefaultMockitoConfiguration
并覆盖方法boolean enableClassClache()
以返回false。