19

次の問題が発生しています。

私のプロジェクトにはテスト スーツがあり、個々のテストは正常に実行されます。

ただし、それらをスイートとして実行すると、次の例外で失敗するものがあります。

Caused by: java.lang.IllegalStateException: The dao Cache is not alive (STATUS_SHUTDOWN)
    at net.sf.ehcache.Cache$CacheStatus.checkAlive(Cache.java:4269)
    at net.sf.ehcache.Cache.checkStatus(Cache.java:2703)
    at net.sf.ehcache.Cache.get(Cache.java:1576)
    at org.springframework.cache.ehcache.EhCacheCache.get(EhCacheCache.java:61)
    at org.springframework.cache.interceptor.CacheAspectSupport.inspectCacheables(CacheAspectSupport.java:310)
    at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:198)
    at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:66)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

この動作を回避する方法はありますか。つまり、複数のテストでキャッシュを有効に保つか、適切にシャットダウンする方法はありますか?

4

5 に答える 5

0

JUnit は、速度のために Spring コンテキストを共有します。テストの 1 つで明示的に Spring コンテキスト クロージングを削除すると、この例外を回避しました。junit テスト クラス全体での spring アプリケーション コンテキストの再利用を参照してください。

于 2015-04-12T20:36:26.860 に答える
0

失敗したテスト クラスに で注釈を付けます@AutoConfigureCache。デフォルトでは、このアノテーションは をインストールします。つまり、キャッシングを無効にするのに適しNoOpCacheManagerた基本的な操作なしの実装です。通常、実際のバッキング ストアなしでバッキング キャッシュ宣言に使用されます。CacheManager実際にはアイテムを格納せずに、アイテムをキャッシュに受け入れるだけです。

@AutoConfigureCache に関する Spring ドキュメント

@NoOpCacheManager の Spring ドキュメント

于 2021-01-15T07:51:28.497 に答える