### Question:
CacheInfoManager extends AbstractService implements ICacheInfoManager, PageChangedObserver { @Around("@annotation(cacheInfoEvict)") public Object aroundCacheInfoEvictMethod(ProceedingJoinPoint pjp, CacheInfoEvict cacheInfoEvict) throws Throwable { try { MethodSignature methodSignature = (MethodSignature) pjp.getSignature(); Method targetMethod = methodSignature.getMethod(); Class targetClass = pjp.getTarget().getClass(); Method effectiveTargetMethod = targetClass.getMethod(targetMethod.getName(), targetMethod.getParameterTypes()); String[] cacheNames = cacheInfoEvict.value(); Object groupsCsv = this.evaluateExpression(cacheInfoEvict.groups().toString(), targetMethod, pjp.getArgs(), effectiveTargetMethod, targetClass); if (null != groupsCsv && groupsCsv.toString().trim().length() > 0) { String[] groups = groupsCsv.toString().split(","); for (String group : groups) { for (String cacheName : cacheNames) { this.flushGroup(cacheName, group); } } } } catch (Throwable t) { logger.error("Error while flushing group", t); throw new ApsSystemException("Error while flushing group", t); } return pjp.proceed(); }  @Override void init(); @Around("@annotation(cacheableInfo)") Object aroundCacheableMethod(ProceedingJoinPoint pjp, CacheableInfo cacheableInfo); @Around("@annotation(cacheInfoEvict)") Object aroundCacheInfoEvictMethod(ProceedingJoinPoint pjp, CacheInfoEvict cacheInfoEvict); void setExpirationTime(String targetCache, String key, int expiresInMinute); void setExpirationTime(String targetCache, String key, long expiresInSeconds); void setExpirationTime(String targetCache, String key, Date expirationTime); @Override void updateFromPageChanged(PageChangedEvent event); @Override void destroy(); void flushAll(); void flushAll(String cacheName); @Override void flushEntry(String targetCache, String key); void putInCache(String targetCache, String key, Object obj); void putInCache(String targetCache, String key, Object obj, String[] groups); @Override void putInGroup(String targetCache, String key, String[] groups); @Override void flushGroup(String targetCache, String group); @Override boolean isExpired(String targetCache, String key); Object getFromCache(String targetCache, String key); void setSpringCacheManager(CacheManager springCacheManager);  }### Answer:
@Test(expected = ApsSystemException.class) public void testAroundCacheInfoEvictMethod() throws Throwable { CacheInfoEvict cacheInfoEvict = new CacheInfoEvict() { @Override public String[] value() { return new String[]{ICacheInfoManager.DEFAULT_CACHE_NAME}; } @Override public String groups() { return "testCacheGroup2,testCacheGroup2"; } @Override public Class<? extends Annotation> annotationType() { return CacheInfoEvict.class; } }; cacheInfoManager.aroundCacheInfoEvictMethod(proceedingJoinPoint, cacheInfoEvict); Mockito.verify(proceedingJoinPoint, Mockito.times(1)).getTarget(); }