JUnit 和 SPring Boot - 在控制器中定义良好但在测试中未定义的对象

我对所有这些都是新手,所以答案应该很明显,但我自己无法得到:op


我正在开发一个简单的 Spring Boot 应用程序,我正在“尝试”设置一些 JUnit 测试。


在我的控制器中,我有这个代码:


@Controller

public class UserController {


    @Autowired

    private OrderInfoService orderInfoService;


    @RequestMapping(value = "/single", method = RequestMethod.GET)

    public ResponseEntity<List<OrderInfo>> orderinfo() {


        List<OrderInfo> orderInfo = orderInfoService.getOrderInfo("ca1121a");

        System.out.println("Created output string :" + orderInfo.toString());

        return new ResponseEntity<List<OrderInfo>>(orderInfo, HttpStatus.OK);

    }

}

这仅在“/single”处显示测试页面。“orderInfo”的内容出现在命令行和我的网页上。好的!


现在我正在尝试像这样设置 JUnit 测试:


public class OrderInfoServiceImplTest {

    // Call class under test

    private OrderInfoService orderInfoService;


    @Test

    public void testGetOrderInfo() {

        System.out.println("Test - getOrderInfo");


        String res = "[OrderInfo :typeNameca1121a - retroFit ]" ;   

        List<OrderInfo> orderInfo = orderInfoService.getOrderInfo("ca1121a");

        System.out.println("Created output orderInfo");


        System.out.println("\t" + orderInfo.size());


        Assert.assertEquals(res, orderInfo.get(0).toString());

    }

}

这给了我一个空指针异常:


[信息] 运行 OrderInfoServiceImplTest 测试 - getOrderInfo [错误] 测试运行:1,失败:0,错误:1,跳过:0,经过的时间:0.178 秒 <<< 失败!- 在 OrderInfoServiceImplTest [ERROR] testGetOrderInfo(OrderInfoServiceImplTest) 中经过的时间:0.115 s <<< 错误!java.lang.NullPointerException 在 com.devglan.service.impl.OrderInfoServiceImplTest.testGetOrderInfo(OrderInfoServiceImplTest.java:23)


我不明白为什么我的对象在控制器中定义得很好,但在测试中却没有,我使用完全相同的命令。它是否与控制器中的@autowired 有关(我不得不说我还不明白)?


任何帮助将不胜感激。谢谢


茅侃侃
浏览 139回答 1
1回答

江户川乱折腾

我对所有这些都是新手,所以答案应该很明显,但我自己无法得到:op我正在开发一个简单的 Spring Boot 应用程序,我正在“尝试”设置一些 JUnit 测试。在我的控制器中,我有这个代码:@Controllerpublic class UserController {&nbsp; &nbsp; @Autowired&nbsp; &nbsp; private OrderInfoService orderInfoService;&nbsp; &nbsp; @RequestMapping(value = "/single", method = RequestMethod.GET)&nbsp; &nbsp; public ResponseEntity<List<OrderInfo>> orderinfo() {&nbsp; &nbsp; &nbsp; &nbsp; List<OrderInfo> orderInfo = orderInfoService.getOrderInfo("ca1121a");&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Created output string :" + orderInfo.toString());&nbsp; &nbsp; &nbsp; &nbsp; return new ResponseEntity<List<OrderInfo>>(orderInfo, HttpStatus.OK);&nbsp; &nbsp; }}这仅在“/single”处显示测试页面。“orderInfo”的内容出现在命令行和我的网页上。好的!现在我正在尝试像这样设置 JUnit 测试:public class OrderInfoServiceImplTest {&nbsp; &nbsp; // Call class under test&nbsp; &nbsp; private OrderInfoService orderInfoService;&nbsp; &nbsp; @Test&nbsp; &nbsp; public void testGetOrderInfo() {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Test - getOrderInfo");&nbsp; &nbsp; &nbsp; &nbsp; String res = "[OrderInfo :typeNameca1121a - retroFit ]" ;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; List<OrderInfo> orderInfo = orderInfoService.getOrderInfo("ca1121a");&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Created output orderInfo");&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("\t" + orderInfo.size());&nbsp; &nbsp; &nbsp; &nbsp; Assert.assertEquals(res, orderInfo.get(0).toString());&nbsp; &nbsp; }}这给了我一个空指针异常:[信息] 运行 OrderInfoServiceImplTest 测试 - getOrderInfo [错误] 测试运行:1,失败:0,错误:1,跳过:0,经过的时间:0.178 秒 <<< 失败!- 在 OrderInfoServiceImplTest [ERROR] testGetOrderInfo(OrderInfoServiceImplTest) 中经过的时间:0.115 s <<< 错误!java.lang.NullPointerException 在 com.devglan.service.impl.OrderInfoServiceImplTest.testGetOrderInfo(OrderInfoServiceImplTest.java:23)我不明白为什么我的对象在控制器中定义得很好,但在测试中却没有,我使用完全相同的命令。它是否与控制器中的@autowired 有关(我不得不说我还不明白)?任何帮助将不胜感激。谢谢
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java