JUnit4 - служба @Autowired в аннотированном методе @Bell пуста - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть тест JUnit, похожий на этот:

@RunWith(JUnitParamsRunner.class)
public class ProcessnDbUnitTest extends DbunitTestParent {

    @Autowired
    private ProcessRepositiory pr;

    private static List<Object[]> allProcessIds = new ArrayList<>();

    private static Object[][] result = new Object[allPDRIds.size()][];

    private static List<Process> process = new ArrayList<>();

    @Before
    public void before() {
        processes = pr.findAll();
        pr.findAll().stream().forEach(process -> allProcessIds.add(new Object[] { process.getId() }));
        result = new Object[allProcessIds.size()][];
    }

DbUnitTestParent:

@ContextConfiguration(classes = DbUnitApplication.class)
@RunWith(Suite.class)
@SuiteClasses({UserDbUnitTest.class, ProcessDbUnitTest.class })
public class DbunitTestParent extends AbstractTransactionalJUnit4SpringContextTests {

    @PersistenceContext
    private EntityManager em;

    @After
    public final void flush() {
        em.flush();
    }

}

Сам тест в этом случае не имеет значения. Поля имеют статус c, потому что метод @Before выбирает данные для параметризованного теста.

Когда я отлаживаю тест, я вижу, что в методе before() автонастройка ProcessRepository значение NULL. Странно то, что в другом, очень похожем тесте все работает нормально ... Почему это могло произойти?

1 Ответ

1 голос
/ 30 апреля 2020

class aka bean set. Для автоматической инициализации аннотации нужен Spring Context для инициализации и управления , если вы хотите использовать эту аннотацию, вам следует использовать SpringJUnit4ClassRunner, если нет, вы можете использовать Mockito для насмешки

...