package org.test4j.testng; import java.util.List; import mockit.integration.testng.internal.TestNGRunnerDecorator; import org.test4j.module.jmockit.utility.JMockitModuleHelper; import org.test4j.tools.reflector.FieldAccessor; import org.testng.IInvokedMethodListener; import org.testng.ITestContext; import org.testng.TestRunner; import org.testng.internal.IConfiguration; public class JMockitInvokaeMethodListener { private final static FieldAccessor<IConfiguration> mField = new FieldAccessor<IConfiguration>( TestRunner.class, "m_invokedMethodListeners"); /** * jmockitçš„hookable<br> * * @see mockit.integration.testng.internal.TestNGRunnerDecorator */ private Boolean beenJMockite = null; @SuppressWarnings("unchecked") public JMockitInvokaeMethodListener(final ITestContext context) { if (context == null) { throw new RuntimeException("the testng conext can't be null."); } if (beenJMockite != null) { return; } List<IInvokedMethodListener> listeners = (List<IInvokedMethodListener>) mField.get(context); beenJMockite = false; for (IInvokedMethodListener listener : listeners) { if (listener instanceof TestNGRunnerDecorator) { beenJMockite = true; } } if (beenJMockite == false) { String hits = JMockitModuleHelper.getJMockitJavaagentHit(); throw new RuntimeException(hits); } } }