我的Spring Boot应用程序有Controller
,它使用Service
使用我创建的bean(SharkMaster
),该bean使用properties
文件中的某些值。
当我在常规模式下运行应用时,它可以正常工作。
但是,当尝试为控制器类运行单元测试并为其提供模拟service
时,它会尝试创建真正的SharkMaster bean并失败,因为它无法从中找到值配置。
我看到several posts并阅读了一些关于类似问题的blog posts,但在当前阶段,当尝试在单元测试模式下运行时,应用程序在NullPointer
崩溃。
@Configuration
public class SharkMaster{
@Value("${sharkName}")
private String sharkName;
public SharkMaster(){
// sharkName is null here and the NullPointer is thrown
}
Controller测试类:
@RunWith(SpringRunner.class)
@WebMvcTest(SharkController.class)
@ContextConfiguration(classes = {SharkMaster.class})
@TestPropertySource("classpath:application-test.yml")
public class SharkControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private SharkService sharkService;
我尝试将@PropertySource("classpath:application-test.yml")
添加到Controller测试类,但它没有帮助。
我认为这个问题与this one不一样,因为在单元测试阶段就是这里的情况。
答案 0 :(得分:1)
删除@ContextConfiguration
并尝试这样做。
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = SharkController.class)
public class SharkControllerTest {
@Autowired
private MockMvc mockMvc;
@InjectMocks
private SharkService sharkService;
@Mock
private SharkMaster sharkMaster;
.......
}