在 spring Boot 2 中测试组件时出现空指针

Nullpointer when testing components in springBoot 2

我有一个带有此组件的 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;
    }

和这个单元测试,当我测试它时,我 git requestEntityPredicates 中的空指针,因为 requestHostelUtils 为空;

@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 {

结果相同

您忘记了自动装配 Bean。像这样将 @Autowired 添加到你的 ctor:

@Component
public class RequestEntityPredicates {

    private final RequestHostelUtils requestHostelUtils;

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

将你的 bean 加载到 Spring:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { RequestHostelUtils.class, RequestEntityPredicates.class })
@Slf4j
public class RequestEntityValidatorsTests {