Java Spring引导Rest模板模拟:ResponseEntity.getBody()引发空指针异常

Java Spring引导Rest模板模拟:ResponseEntity.getBody()引发空指针异常,java,spring,spring-boot,junit,mockito,Java,Spring,Spring Boot,Junit,Mockito,我是朱尼特和莫基托的新手。这里我试图模拟rest模板调用并返回一个响应实体。但它向我抛出了一个空指针异常。我不知道嘲笑有什么不对。谁能告诉我哪里做错了 JUnit5单元测试用例 class MyTest { @InjectMocks private MyService service; @Mock private RestTemplate template; @BeforeEach void setUp(){ MockitoAnnotatio

我是朱尼特和莫基托的新手。这里我试图模拟rest模板调用并返回一个响应实体。但它向我抛出了一个空指针异常。我不知道嘲笑有什么不对。谁能告诉我哪里做错了

JUnit5单元测试用例

class MyTest {

   @InjectMocks
   private MyService service;

   @Mock
   private RestTemplate template;

   @BeforeEach
   void setUp(){
      MockitoAnnotations.initMocks(this); 
   }
   private ResponseEntity<String> generateResponse(String body, HttpStatus http) {
      return new ResponseEntity<>(body, http);
   }

   @Test
   public void publishEventsuccessResponseTest() {

      when(template.postForEntity(ArgumentMatchers.anyString(), ArgumentMatchers.any(),
      ArgumentMatchers.<Class<String>>any())).thenReturn(generateResponse("uuid", 
      HttpStatus.OK));
      String result = service.sentData("data");
      Assertions.assertTrue("uuid".equals(result));
   }
}
classmytest{
@注射模拟
私人MyService服务;
@嘲弄
私有rest模板;
@之前
无效设置(){
initMocks(this);
}
private ResponseEntity generateResponse(字符串体,HttpStatus http){
返回新的响应属性(body,http);
}
@试验
public void publisheventsccessresponsetest(){
当(template.postForEntity(ArgumentMatchers.anyString()、ArgumentMatchers.any()),
ArgumentMatchers.any())。然后返回(generateResponse(“uuid”),
HttpStatus.OK);
字符串结果=service.sentData(“数据”);
assertTrue(“uuid”.equals(result));
}
}
服务

    class MyService {
    
    
       public String sentData(String data) {
    
         String jsonResp = "";
         ResponseEntity<String> response;
    
         try {
             HttpEntity<String> requestBody = new HttpEntity<String>(data, headers);
             response = restTemplate.postForEntity("url", requestBody, String.class);
         } catch (Exception ex) {}
    
         System.out.println(response); //value : Null
    
         if (response.getStatusCodeValue() == 200) { // Null pointer exception
               jsonResp = response.getBody();
         }
      return jsonResp;
    
    }
}
classmyservice{
公共字符串数据(字符串数据){
字符串jsonResp=“”;
反应性反应;
试一试{
HttpEntity requestBody=新的HttpEntity(数据、标题);
response=restTemplate.postForEntity(“url”,requestBody,String.class);
}捕获(例外情况除外){}
System.out.println(响应);//值:Null
如果(response.getStatusCodeValue()==200){//Null指针异常
jsonResp=response.getBody();
}
返回jsonResp;
}
}

将jUnit4的
@beforeach
更改为
@beforeach
并添加
public void setUp()

你的测试应该是绿色的