当前位置: 首页 > 知识库问答 >
问题:

使用@SpringBootTest时为空指针

姜俊友
2023-03-14

我使用的是spring boot 1.4,

当使用@SpringBootTest注释进行集成测试时,它会给出一个空指针。

@RunWith(SpringRunner.class);
@SpringBootTest
public class MyControllerTest {
  @Test
  public void mytest {
     when().
            get("/hello").
     then().
            body("hello");
  }
}

对于主类:

@SpringApplication
@EnableCaching
@EnableAsync
public class HelloApp extends AsyncConfigureSupport {
  public static void main(String[] args) {
     SpringApplication.run(HelloApp.class, args);
  }

  @Override
  public Executor getAsyncExecutor() {
    ...
  }
}

然后在我的控制器中:

@RestController
public class HelloController {
  @Autowired
  private HelloService helloService;

  @RequestMapping("/hello");
  public String hello() {
    return helloService.sayHello();
  }
}

HelloService

@Service
public class HelloService {
  public String sayHello() {
    return "hello";
  }
}

但在处理请求时,它会告诉helloService NullPointException。

我错过了什么?

共有2个答案

龙兴贤
2023-03-14

下面的示例测试类可能会对您有所帮助。在本Spring指南中,展示了如何以Spring方式集成测试Rest控制器的示例。

@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class HelloControllerTest {

    private MockMvc mockMvc;
    @Autowired
    private WebApplicationContext webApplicationContext;

    @Before
    public void setUp() {
        this.mockMvc =  MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }

    @Test
    public void hello() throws Exception {
        mockMvc.perform(get("/hello")).andExpect(content().string("hello"));    
    }
}
江天宇
2023-03-14

您需要在您的测试类中模拟HelloService,因为您的控制器正在调用服务。在你的情况下,你的测试类不知道是否有任何服务可用

 类似资料:
  • > 单击 受保护得空onPrepareDialog(int id,Dialog Dialog) 受保护的对话框onCreateDialog(int id) 如果我对timepickerdialog代码做了什么错误,请告诉我。

  • 问题内容: 我一直在使用minidom.toprettyxml整理我的xml文件。当我创建XML文件并使用此方法时,所有工作都可以进行,但是如果我在修改xml文件后使用它(例如,我添加了其他节点),然后将其写回到XML ,我得到的是空行,每次更新时,我都会得到越来越多的空行… 我的代码: 结果: 有什么建议 ? 谢谢。 问题答案: 我在这里找到了解决方案:http : //code.actives

  • 我的数据库中有一些值,如果还没有输入的话,它们可能为空。 但是当我在我的html中使用Thymeleaf时,它在解析空值时出错。 这个有什么办法处理吗

  • 我正在尝试创建二维双链接圆形阵列,从txt文件读取数据并自动创建节点。我的程序正在正确地读取第一行,但当它到达下一行并开始创建下一个节点时,会出现空指针。我不明白为什么会这样,请帮帮我。 这些都是错误。Null指针在尝试创建第二个节点时发生。它正确地创建第一个节点,而不是紧接着创建空指针。 第77行=位置next=n; 第69行=插入后(head.prev, x); 第18行=mList。镶片(k

  • 我试图测试一个基于Spring引导的Restendpoint。代码能够返回预期的输出,但测试失败,错误如下: 已解析[org.springframework.http.converter.HttpMessageNotWritableException:预设内容类型为“null”的[class java.util.LinkedList]没有转换器 对此有任何想法都将不胜感激! 下面是相同的代码: 控

  • 当HTML代码适合正在生成的一个页面时,我使用iText HTML到pdf,但当HTML代码太大时,它无法工作使用Java代码HTMLConverter.ConvertTopDF(htmlFile,PDFile);使用itext7 HTML2PDF-2.1.6是版本 Java代码 下面是工作的HTML代码 例外情况是