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