Нулевой указатель при тестировании компонентов в SpringBoot 2 - PullRequest
0 голосов
/ 28 октября 2019

У меня есть приложение SpringBoot 2 с этим компонентом

@Component
@Slf4j
public class RequestHostelUtils {

    private RequestHostelUtils() {
        // Private constructor to hide the implicit public one
    }

и этим другим

@Component
public class RequestEntityPredicates {

    private final RequestHostelUtils requestHostelUtils;

    public RequestEntityPredicates(RequestHostelUtils requestHostelUtils) {
        this.requestHostelUtils = requestHostelUtils;
    }

и этим модульным тестом, что при тестировании я получаю нулевой указатель в requestEntityPredicatesпотому что requestHostelUtils имеет значение null;

@RunWith(MockitoJUnitRunner.class)
@Slf4j
    public class RequestEntityValidatorsTests {

        @Autowired
        private RequestHostelUtils requestHostelUtils;

        private RequestEntityPredicates requestEntityPredicates;



    @Before
    public void setUp() throws Exception {
        requestEntityPredicates = new RequestEntityPredicates(requestHostelUtils);
    }

Я также пытался

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { Application.class })
@Slf4j
 public class RequestEntityValidatorsTests {

с теми же результатами

Ответы [ 2 ]

2 голосов
/ 28 октября 2019

Загрузите ваши бобы в Spring:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { RequestHostelUtils.class, RequestEntityPredicates.class })
@Slf4j
public class RequestEntityValidatorsTests { 
0 голосов
/ 28 октября 2019

Вы забыли автоматически подключить свой Боб. Добавьте @Autowired в ваш ctor следующим образом:

@Component
public class RequestEntityPredicates {

    private final RequestHostelUtils requestHostelUtils;

    @Autowired
    public RequestEntityPredicates(RequestHostelUtils requestHostelUtils) {
        this.requestHostelUtils = requestHostelUtils;
    }
}
...