I wrote a test class like the following
public class MyParameterizedClassTest extends BaseRepositoryTest { private int multiplierA; private int multiplierB; public MyParameterizedClassTest(int multiplierA) { this.multiplierA = multiplierA; } @Parameters public static Collection<Object[]> data() { Object[][] data = new Object[][] { { 1 }, { 5 }, { 121 } }; return Arrays.asList(data); } @Test public void testMultiplyException() { assertEquals("Result", multiplierA * multiplierA,multiply(multiplierA)); } public int multiply(int a){ return a*a; } }
And my BaseRepositoryTest class follows
@RunWith (Parameterized.class) @ContextConfiguration(locations = {"classpath:applicationContext.xml"}) public abstract class BaseRepositoryTest extends AbstractJUnit4SpringContextTests { @Inject SessionFactory sessionFactory; private Transaction transaction; public Session getSession() { Session session; try { session = sessionFactory.getCurrentSession(); } catch (SessionException se) { session = sessionFactory.openSession(); } return session; } @Before public void setUp() throws Exception { transaction = getSession().beginTransaction(); } @After public void tearDown() throws Exception { if (transaction != null) { transaction.rollback(); } getSession().close(); } @Before public void baseSetUp() { MockitoAnnotations.initMocks(this); } }
When I run my test class, it shows how,
Test class should have exactly one public zero-argument constructor:at org.junit.runners.BlockJUnit4ClassRunner.validateZeroArgConstructor
I want to create a testing method with @ parameters, so please someone can help find a solution
source share