在开发模式下运行Play应用程序时,Mockito会出现问题

时间:2015-02-02 09:15:33

标签: java unit-testing playframework mockito playframework-1.x

我正在为Play 1.x应用编写单元测试,并使用Mockito轻松创建模拟实例。我正在开发模式下运行,因此我不必经常重启应用程序。

问题出现在我更改代码时,重新运行我的单元测试而不重新启动Play应用程序。我得到以下异常:

A java.lang.ClassCastException has been caught, Cannot cast services.MyService$$EnhancerByMockitoWithCGLIB$$12cee5a2 to services.MyService

当我重新启动te app并重新运行测试时,所有这些都执行正常,但每次重启都需要几分钟。有什么可以做的吗?

1 个答案:

答案 0 :(得分:0)

使用Play时这是一个已知问题,lib类加载器保持不变,而每次重新加载时更改了开发代码,这会导致缓存反射相关内容的库出现问题 CCE

您必须通过覆盖默认配置来禁用类缓存,请参阅完整的documentation

我们的想法是,在您的测试代码库中,创建一个具有以下限定名称org.mockito.configuration.MockitoConfiguration的类,该类将扩展org.mockito.configuration.DefaultMockitoConfiguration并覆盖方法boolean enableClassClache()以返回false。