public void createClassContext(@Observes(precedence = 100) EventContext<ClassEvent> context) { ClassContext classContext = this.classContextInstance.get(); try { classContext.activate(context.getEvent().getTestClass().getJavaClass()); testClassProducer.set(context.getEvent().getTestClass()); context.proceed(); } finally { classContext.deactivate(); if (AfterClass.class.isAssignableFrom(context.getEvent().getClass())) { synchronized (activatedTestContexts) { Class<?> testClass = context.getEvent().getTestClass().getJavaClass(); Set<Object> instances = activatedTestContexts.get(testClass); if (instances != null) { TestContext testContext = testContextInstance.get(); for (Object instance : instances) { testContext.destroy(instance); } activatedTestContexts.remove(testClass); } } classContext.destroy(context.getEvent().getTestClass().getJavaClass()); } } }