Я переносу тесты в приложении из TestNG в Junit 4.
В подходе TestNG использовалась аннотация @DataProvider
. Я добавил junitparams
к pom.xml
, и @Parameters
работает в обычных тестах, как и ожидалось.
Но у меня есть другой набор тестов, использующий DBUnit, где этот подход терпит неудачу.
Я изменил методы предоставления данных как обычно:
public static Object[][] getNewContent() {
Object[][] result = someMethodToGetData();
return result;
}
@Test
@Parameters(method = "getNewContent")
public void createNewContentTest(Class<? extends Content> clazz) throws Exception {
User u = getUser();
Content newContent = clazz.newInstance();
newContent.setOwner(u);
Content savedContent = contentRepository.save(newContent);
assertNotNull(savedContent.getId());
}
Когда я запускаю тест, я получаю:
java.lang.RuntimeException: Could not invoke method: getNewContentClasses defined in class class com.myapp.content.test.ContentEntityTest so no params were used.
Дополнительная информация:
Тест подпись класса выглядит следующим образом:
@RunWith(JUnitParamsRunner.class)
public class ContentEntityTest extends DbunitTestParent
И DbUnitTestParent
выглядит следующим образом:
@ContextConfiguration(classes = DbUnitApplication.class)
@RunWith(Suite.class)
@SuiteClasses({ ContentEntityTest.class, ContentTest.class })
public class DbunitTestParent extends AbstractTransactionalJUnit4SpringContextTests {
@PersistenceContext
private EntityManager em;
@After
public final void flush() {
em.flush();
}
}
Чего мне не хватает?