package org.unitils.core.junit; import java.lang.reflect.Method; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.model.Statement; import org.unitils.UnitilsJUnit4TestClassRunner; import org.unitils.core.TestListener; import org.unitils.core.UnitilsException; import org.unitils.easymock.EasyMockUnitils; import org.unitils.easymock.annotation.Mock; /** * Test {@link AfterTestMethodStatement}. * * @author Willemijn Wouters * * @since 3.4.1 * */ @RunWith(UnitilsJUnit4TestClassRunner.class) public class AfterTestMethodStatementMockTest { @Mock private TestListener listener; @Mock private Statement statement; @Test public void testEvaluateOk() throws Throwable { Method method = TestClass2.class.getMethod("test1"); TestClass2 testObject = new TestClass2(); statement.evaluate(); listener.afterTestMethod(testObject, method, null); EasyMockUnitils.replay(); new AfterTestMethodStatement(listener, statement, method, testObject).evaluate(); } @Test(expected = NullPointerException.class) public void testEvaluateStatementAndTestListenerException() throws Throwable { Method method = TestClass2.class.getMethod("test1"); TestClass2 testObject = new TestClass2(); statement.evaluate(); EasyMock.expectLastCall().andThrow(new NullPointerException("This is a test NullpointerException")); listener.afterTestMethod(testObject, method, null); EasyMock.expectLastCall().andThrow(new UnitilsException()); EasyMockUnitils.replay(); new AfterTestMethodStatement(listener, statement, method, testObject).evaluate(); } private class TestClass2 { @Test public void test1() { Assert.assertTrue(true); } } }