package org.unitils; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.unitils.UnitilsParameterized.TestClassRunnerForParameters; import org.unitils.parameterized.ParameterizedIntegrationTest; import org.unitils.reflectionassert.ReflectionAssert; /** * Parameterized runner. * * @author Jeroen Horemans * @author Thomas De Rycke * @author Willemijn Wouters * * @since 3.4 * */ public class UnitilsParameterizedTestClassRunnerForParameters { private UnitilsParameterized unitilsParameterized; private TestClassRunnerForParameters sut; @Before public void init() throws Throwable { unitilsParameterized = new UnitilsParameterized(ParameterizedIntegrationTest.class); } @Test public void testOneParameter() throws Exception { List<Object[]> parameters = new ArrayList<Object[]>(); parameters.add(new Object[]{null}); sut = unitilsParameterized.new TestClassRunnerForParameters(Testclass1.class, parameters, 0); String actual = sut.getName(); String expected = "dataset [null]"; Assert.assertEquals(expected, actual); } @Test public void testMultipleParametersArrays() throws Exception { List<Object[]> parameters = new ArrayList<Object[]>(); parameters.add(new Object[]{1,2}); parameters.add(new Object[]{3,4}); sut = unitilsParameterized.new TestClassRunnerForParameters(Testclass1.class, parameters, 1); String actual = sut.getName(); String expected = "dataset [3,4]"; Assert.assertEquals(expected, actual); } @Test(expected = IndexOutOfBoundsException.class) public void testIndexOutOfBounds() throws Exception { List<Object[]> parameters = new ArrayList<Object[]>(); sut = unitilsParameterized.new TestClassRunnerForParameters(Testclass1.class, parameters, 1); sut.getName(); } @Test public void testTestName() throws Exception { Method method = Testclass1.class.getMethod("testMethod1"); List<Object[]> parameters = new ArrayList<Object[]>(); parameters.add(new Object[]{1,2}); sut = unitilsParameterized.new TestClassRunnerForParameters(Testclass1.class, parameters, 0); String actual = sut.testName(method); String expected = "testMethod1[0]"; Assert.assertEquals(expected, actual); } @Test public void testComputeParams() throws Exception { List<Object[]> parameters = new ArrayList<Object[]>(); parameters.add(new Object[]{1,2}); sut = unitilsParameterized.new TestClassRunnerForParameters(Testclass1.class, parameters, 0); Object[] actual = sut.computeParams(); Object[] expected = new Object[]{1,2}; ReflectionAssert.assertLenientEquals(expected, actual); } private class Testclass1 { public void testMethod1() { //do nothing } } }