package org.unitils.core.junit;
import java.lang.reflect.Method;
import org.easymock.classextension.EasyMock;
import org.junit.Assert;
import org.junit.Before;
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.easymock.EasyMockUnitils;
import org.unitils.easymock.annotation.Mock;
/**
* test {@link BeforeTestSetUpStatement}.
*
* @author Willemijn Wouters
*
* @since 3.4.1
*
*/
@RunWith(UnitilsJUnit4TestClassRunner.class)
public class BeforeTestSetUpStatementTest {
@Mock
private TestListener listener;
@Mock
private Statement statement;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
}
@Test(expected = NullPointerException.class)
public void testEvaluateExceptionOnListener() throws Throwable {
TestClass2 testObject = new TestClass2();
Method testMethod = TestClass2.class.getMethod("test1");
listener.beforeTestSetUp(testObject, testMethod);
EasyMock.expectLastCall().andThrow(new NullPointerException());
EasyMockUnitils.replay();
new BeforeTestSetUpStatement(testObject, testMethod, listener, statement).evaluate();
}
@Test(expected = NullPointerException.class)
public void testEvaluateExceptionOnStatement() throws Throwable {
TestClass2 testObject = new TestClass2();
Method testMethod = TestClass2.class.getMethod("test1");
listener.beforeTestSetUp(testObject, testMethod);
statement.evaluate();
EasyMock.expectLastCall().andThrow(new NullPointerException());
EasyMockUnitils.replay();
new BeforeTestSetUpStatement(testObject, testMethod, listener, statement).evaluate();
}
@Test
public void testEvaluateOk() throws Throwable {
TestClass2 testObject = new TestClass2();
Method testMethod = TestClass2.class.getMethod("test1");
listener.beforeTestSetUp(testObject, testMethod);
statement.evaluate();
EasyMockUnitils.replay();
new BeforeTestSetUpStatement(testObject, testMethod, listener, statement).evaluate();
}
private class TestClass2 {
@Test
public void test1() {
Assert.assertTrue(true);
}
}
}