Java Spring测试自动连线控制器为空错误
我想使用Spring(而不是Spring引导)测试Java Web控制器 我的控制器是Java Spring测试自动连线控制器为空错误,java,spring,Java,Spring,我想使用Spring(而不是Spring引导)测试Java Web控制器 我的控制器是 @Controller @RequestMapping("/orders") public class OrderHdrController { @RequestMapping(value = "/getOrderList", method = RequestMethod.POST) @ResponseBody public Map<String, Object> getO
@Controller
@RequestMapping("/orders")
public class OrderHdrController {
@RequestMapping(value = "/getOrderList", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> getOrderTables(OrderSearchDto orderSearchDto) { ... }
}
@控制器
@请求映射(“/orders”)
公共类OrderHdrController{
@RequestMapping(value=“/getOrderList”,method=RequestMethod.POST)
@应答器
公共映射getOrderTables(OrderSearchDto OrderSearchDto){…}
}
我的测试课程是:
public class FilterActivityTest2 {
@Autowired
private OrderHdrController orderHdrController;
@Test
public void testActivity() {
OrderSearchDto orderSearchDto = new OrderSearchDto();
OrderSearchPanelDto orderSearchPanelDto = new OrderSearchPanelDto();
orderSearchPanelDto.setActivityTypes(Arrays.asList("TAKEOVER","DELIVERY"));
orderSearchDto.setOrderSearchPanelDto(orderSearchPanelDto);
Map<String, Object> result = orderHdrController.getOrderTables(orderSearchDto);
assertNotNull(result);
}
}
公共类筛选器活动测试2{
@自动连线
专用OrderHdrController OrderHdrController;
@试验
公共无效测试活动(){
OrderSearchDto OrderSearchDto=新OrderSearchDto();
OrderSearchPanelDto OrderSearchPanelDto=新的OrderSearchPanelDto();
orderSearchPanelDto.setActivityTypes(Arrays.asList(“接管”、“交付”));
orderSearchDto.setOrderSearchPanelDto(orderSearchPanelDto);
映射结果=orderHdrController.getOrderTables(orderSearchDto);
assertNotNull(结果);
}
}
我不想模仿任何对象。我只想在控制器上运行测试,一直到数据库。但是,当我调试到测试中时,testActivity方法中的orderHdrController为null
我做错了什么?请帮助或向我询问更多信息。谢谢。您的
FilterActivityTest2
需要由Spring上下文管理,以便能够自动关联依赖项
要做到这一点,请使用以下注释您的测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
或者扩展已经有这些注释的主测试类。如果您使用spring初始值设定项创建项目,您将在为您创建的测试中找到该类
public class FilterActivityTest2 extends MyApplicationTests {
编辑
对于Spring,您可以使用。这是一个很好的教程。另请参阅官方文档。您的
过滤器活动测试2
需要由Spring上下文管理,以便能够自动关联依赖项
要做到这一点,请使用以下注释您的测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
或者扩展已经有这些注释的主测试类。如果您使用spring初始值设定项创建项目,您将在为您创建的测试中找到该类
public class FilterActivityTest2 extends MyApplicationTests {
编辑
对于Spring,您可以使用。这是一个很好的教程。另请参阅官方文档。如果不使用spring boot,则可以手动创建应用程序上下文
@之前
公共void init(){
ApplicationContext上下文=所需的实现;
controller=context.getBean(“bean名称”);
}
但最好这样做
@RunWith(MockitoJUnitRunner.class)
公共类筛选器ActivityTest2{
专用OrderHdrController OrderHdrController;
@蚕豆
私人服务;
@蚕豆
私家道道;
@以前
公共void init(){
orderHdrController=新的orderHdrController(服务,dao…);
}
@试验
....
}
如果不使用spring boot,则可以手动创建应用程序上下文
@之前
公共void init(){
ApplicationContext上下文=所需的实现;
controller=context.getBean(“bean名称”);
}
但最好这样做
@RunWith(MockitoJUnitRunner.class)
公共类筛选器ActivityTest2{
专用OrderHdrController OrderHdrController;
@蚕豆
私人服务;
@蚕豆
私家道道;
@以前
公共void init(){
orderHdrController=新的orderHdrController(服务,dao…);
}
@试验
....
}
这是否回答了您的问题?使用@RunWith
尝试SpringRunner。我认为您缺少@RunWith
,请使用@InjectMock
而不是@autowired
谢谢您的回复。我用的是弹簧,不是弹簧靴。我使用的@RunWith是什么?在FilterActivityTest2类@SpringBootTest(class=SpringBootDemoApplication.class,webEnvironment=webEnvironment.RANDOM\u PORT)的顶部试试这个,这能回答你的问题吗?使用@RunWith
尝试SpringRunner。我认为您缺少@RunWith
,请使用@InjectMock
而不是@autowired
谢谢您的回复。我用的是弹簧,不是弹簧靴。我使用的@RunWith是什么?在FilterActivityTest2类@SpringBootTest(class=SpringBootDemoApplication.class,webEnvironment=webEnvironment.RANDOM_PORT)的顶部试试这个。我使用的是Spring,不是Spring Boot。如何将其更改为Spring?@AlanTT类似的东西,您可以使用。@AlanTT我在回答中添加了一个链接到一个示例。他要求进行一个不是Spring boot的Spring测试。另一个答案是正确的。@Kartik谢谢你的回答。我按照您的建议创建了一个java配置。但是在我的orderHdrController中,我有OrderHdrepository,它是一个接口。如何在配置java文件中注入OrderHdrepository Bean?我无法实例化新的OrderHdrepository(),我使用的是Spring,而不是Spring Boot。如何将其更改为Spring?@AlanTT类似的东西,您可以使用。@AlanTT我在回答中添加了一个链接到一个示例。他要求进行一个不是Spring boot的Spring测试。另一个答案是正确的。@Kartik谢谢你的回答。我按照您的建议创建了一个java配置。但是在我的orderHdrController中,我有OrderHdrepository,它是一个接口。如何在配置java文件中注入OrderHdrepository Bean?我无法实例化new OrderHdrepository()