package org.test4j.module.jmockit;
import java.lang.reflect.Method;
import mockit.internal.startup.Startup;
import org.test4j.module.core.Module;
import org.test4j.module.core.TestListener;
import org.test4j.module.core.utility.MessageHelper;
public class JMockitModule implements Module {
@Override
public void init() {
MessageHelper.info("init jmockit in jmockit module.");
Startup.initializeIfPossible();
}
@Override
public void afterInit() {
}
@Override
public TestListener getTestListener() {
return new JMockitTestListener();
}
protected class JMockitTestListener extends TestListener {
/**
* {@inheritDoc}<br>
* jmockit-0.999.9 bug fixed:<br>
* 测试类在 mockit.integration.testng.internal.TestNGRunnerDecorator 方法<br>
* run(IHookCallBack callBack, ITestResult testResult) -><br>
* executeTestMethod(IHookCallBack callBack, ITestResult testResult) -><br>
* cleanUpAfterTestMethodExecution() -><br>
* ExecutingTest..void finishExecution()中将全局的 nonStrictMocks
* 列表清空,导致后续的Expectations()出错
*/
@Override
public void beforeMethod(Object testObject, Method testMethod) {
// JMockitHookable.reRegistedMockField(testObject);
}
@Override
public void afterClass(Object testObject) {
// Mockit.tearDownMocks();
}
@Override
protected String getName() {
return "JMockitTestListener";
}
}
}