2014-02-07 1 views
0

대부분의 Junit이 실패한 프로젝트에서 작업하고 있습니다. 제 일은 그들을 고쳐서 달아나게하는 것입니다. 나는 약 200 개의 Junit 클래스를 수정했지만 약 136 개의 Junits가 여전히 실패하고있다. 아이디어가 없다. 어떤 경우에는 실패하고 어떤 것은 실패한다. 문제를 해결하고 ehCache를 시도하십시오. 그것은 폐쇄되고 있습니다.CacheManager.clearAll throws CacheManager가 Junit 프로그램에 대해 종료되었습니다.

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) 

답변

0

무엇이 잘못되었는지 알아 냈습니다. Junit 중 하나가 완료하는 데 시간이 걸리고 DAO입니다. 그 방법은 약 40 ~ 50 분을 완료하기 위해 AND를 완료하고 캐쉬 관리 프로그램에 대한 세션 시간 초과가 발생하고 다른 Junit이 액세스를 시도 할 때 해당 오류가 발생합니다. 나는 Junit이 기본적으로 DAO 쿼리가 더 빨리 실행되고 모든 것이 잘 작동한다는 것을 의미했다.

+4

** 50 * 분 ***? DAO는 Google의 데이터베이스 색인을 재구성하고 무엇을하고 있습니까? O_o –

0

코드의 일부가 캐시 관리자를 종료하고 있습니다 (아마 단위 테스트가 종료 된 것일 수 있습니다). 그런 다음 캐시를 지우려고합니다. 스택 추적에서 이것을 볼 수 있습니다 :

at net.sf.ehcache.CacheManager.clearAll(CacheManager.java:1526) 

그러나 일단 관리자가 종료되면 작업을 호출 할 수 없습니다. 단위 테스트 중 하나의 코드를 보지 않고는 더 구체적이지 않습니다.

+0

이걸 만들고있는 정확한 수업을 이해할 수 없습니다. 하지만 때로는 작동합니다 (모든 Junits가 전달됨을 의미). 그냥 clearAll이 하나의 Junit 테스트라고하고 다른 Junit 테스트도 똑같은 경우이 문제가 발생하는지 궁금합니다. – Kumar