package org.sky.auto.runner.statement; import java.util.ArrayList; import java.util.List; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.Statement; public class InterceptorStatement extends Statement{ private final FrameworkMethod testMethod; private Object target; public InterceptorStatement(FrameworkMethod testMethod, Object target) { this.testMethod=testMethod; this.target=target; } private List<Interceptor> interceptors = new ArrayList<Interceptor>(); @Override public void evaluate() throws Throwable { addInterceptor(new ThreadLocalResetInterceptor()); for(Interceptor interceptor:interceptors){ interceptor.interceptorBefore(); } testMethod.invokeExplosively(target); for(Interceptor interceptor:interceptors){ interceptor.interceptorAfter(); } } public void addInterceptor(Interceptor interceptor){ interceptors.add(interceptor); } }