Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring测试自动连线控制器为空错误_Java_Spring - Fatal编程技术网

Java Spring测试自动连线控制器为空错误

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

我想使用Spring(而不是Spring引导)测试Java Web控制器

我的控制器是

@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()