У меня проблема с переносом некоторых тестов из TestNG в JUnit.
Вот как выглядели тесты до того, как я пытался их перенести:
@Autowired
private ContentRepository contentRepository;
@DataProvider(name = "getAllPossibleContents")
private Object[][] getAllContents() {
List<Object[]> allContents = new ArrayList<>();
contentRepository.findAll().forEach(content -> allContents.add(new Object[] {content.getId()}));
Object[][] result = new Object[allContents.size()][];
return result;
}
@Test(dataProvider = "getAllPossibleContents")
public void testAddingContext(Long contentId) {
Content content = contentRepository.findOne(contentId);
assertEquals(10, content.getContext().size());
assertTrue(content.getContext().contains(somethingNotImportant));
}
Я изменился код:
@Autowired
private ContentRepository contentRepository;
public static Object[][] getAllContents() {
List<Object[]> allContents = new ArrayList<>();
contentRepository.findAll().forEach(content -> allContents.add(new Object[] {content.getId()}));
Object[][] result = new Object[allContents.size()][];
return result;
}
@Test
@Parameters(method = "getAllContents")
public void testAddingContext(Long contentId) {
Content content = contentRepository.findOne(contentId);
assertEquals(10, content.getContext().size());
assertTrue(content.getContext().contains(somethingNotImportant));
}
Проблема в том, что я получаю сообщение об ошибке из своей IDE:
Cannot make a static reference to the non-static field contentRepository
И для меня это очевидный метод, который должен предоставлять данные c.
Есть ли возможность изменить этот код, чтобы я мог использовать contentRepository
с параметризованными тестами? Я немного читал об использовании классического подхода JUnit (@RunWith(Parametrized.class)
), но кажется, что методы предоставления данных в этом подходе должны быть также c ...