package org.test4j.junit; import java.lang.reflect.Method; import mockit.Mock; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; import org.test4j.hamcrest.matcher.string.StringMode; import org.test4j.module.ICore; import org.test4j.module.core.CoreModule; import org.test4j.module.core.TestListener; import org.test4j.module.core.utility.MessageHelper; import forfilter.DaveyCategory; /** * 整个类用于验证test4j的生命周期 * * @author darui.wudr */ @Category(DaveyCategory.class) public class Test4JRunnerTest implements ICore { private static StringBuffer buff = new StringBuffer(); @BeforeClass public static void mockTest4JRunner() { buff = new StringBuffer(); new MockUp<CoreModule>() { @Mock public TestListener getTestListener() { return new MockListener(buff); } }; buff.append("@B"); MessageHelper.info("@BeforeClass"); } @Test public void test1() { buff.append("TEST"); MessageHelper.info("test1"); } @Test public void test2() { buff.append("TEST"); MessageHelper.info("test2"); } static final String METHOD_BUFF_CONST = "bM bR TEST aR aM"; @AfterClass public static void teardowClass() { buff.append("@A"); MessageHelper.info("@AfterClass"); want.string(buff.toString()).isEqualTo("@B bC" + METHOD_BUFF_CONST + METHOD_BUFF_CONST + "aC @A", StringMode.IgnoreSpace); } } class MockListener extends TestListener { static StringBuffer buff; public MockListener(StringBuffer buff) { MockListener.buff = buff; } @SuppressWarnings("rawtypes") @Override public void beforeClass(Class testClazz) { buff.append("bC"); MessageHelper.info("setupClass"); } @Override public void beforeMethod(Object testObject, Method testMethod) { buff.append("bM"); MessageHelper.info("setupMethod"); } @Override public void beforeRunning(Object testObject, Method testMethod) { buff.append("bR"); MessageHelper.info("beforeMethodRunning"); } @Override public void afterRunned(Object testObject, Method testMethod, Throwable testThrowable) { buff.append("aR"); MessageHelper.info("afterMethodRunned"); } @Override public void afterMethod(Object testObject, Method testMethod) { buff.append("aM"); MessageHelper.info("teardownMethod"); } @Override public void afterClass(Object testObject) { buff.append("aC"); MessageHelper.info("teardownClass"); } @Override protected String getName() { return "mock test listener"; } }