CacheManager.clearAll throws CacheManager 已为 Junit 程序关闭
Posted
技术标签:
【中文标题】CacheManager.clearAll throws CacheManager 已为 Junit 程序关闭【英文标题】:CacheManager.clearAll throws CacheManager has been shut down for Junit Program 【发布时间】:2014-02-07 12:12:24 【问题描述】:我正在从事一个大部分 Junit 都失败的项目。我的工作是修复它们并让它们运行。我已经修复了大约 200 个 Junit 课程,但仍有大约 136 个 Junit 失败,原因没有想法,有时他们失败了,有些他们工作。尝试深入研究问题和 ehCache。它正在关闭。
Can any body please explain me why this exception occur in Junt testing and that to not all the time.
Please Note we have test cases for "Action" classes as well(Which deal with Servlet Context)
But interesting point all action test classes are getting passed.
Error Message is :
java.lang.IllegalStateException: The CacheManager has been shut down. It can no longer be used.
at net.sf.ehcache.CacheManager.checkStatus(CacheManager.java:1504)
at net.sf.ehcache.CacheManager.getCacheNames(CacheManager.java:1491)
at net.sf.ehcache.CacheManager.clearAll(CacheManager.java:1526)
【问题讨论】:
【参考方案1】:您的代码的某些部分正在关闭缓存管理器(可能在单元测试的拆除中),然后尝试清除缓存。您可以在堆栈跟踪中看到这一点:
at net.sf.ehcache.CacheManager.clearAll(CacheManager.java:1526)
但是一旦管理器关闭,您就无法对其调用操作。没有看到其中一个单元测试的代码,很难更具体。
【讨论】:
无法计算出确切的类别。但有时它会起作用(意味着所有的 Junits 都通过了。)。只是想知道,如果 clearAll 被称为一个 Junit 测试并且另一个 Junit 测试也这样做,那会导致这个问题。【参考方案2】:我知道出了什么问题。其中一个 Junit 需要时间来完成,它是一个 DAO。该方法大约需要 40 到 50 分钟才能完成,并且缓存管理器的会话超时发生,当其他 Junit 尝试访问时,我收到了该错误。 我修复了 Junit,基本上意味着 DAO 的查询运行得更快并且一切正常。
【讨论】:
50 分钟 ?那个 DAO 在做什么,重建谷歌的数据库索引? O_o以上是关于CacheManager.clearAll throws CacheManager 已为 Junit 程序关闭的主要内容,如果未能解决你的问题,请参考以下文章
动态更改 Pin It (Pinterest) 按钮的 thr URL
tomcat启动时,内存溢出,Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thr