`mock.Mvc.perform()` 导致 `NullPointerException`

`mock.Mvc.perform()` resulting on a `NullPointerException`

在这里,我正在尝试对端点执行单元测试 /persons :

@AutoConfigureMockMvc
@WebMvcTest(PersonController.class)
public class PersonServiceTest {

    @Autowired
    private static MockMvc mockMvc;

    @MockBean
    private PersonService personService;

    @Test
    public void shouldGetPersons() throws Exception {

        Person person = new Person();
        person.setFirstName("Harry");
        person.setLastName("POTTER");

        List<Person> persons = new ArrayList<>();
        persons.add(person);

        Mockito.when(personService.getPersons()).thenReturn(persons);

        mockMvc.perform(get("/persons")).andExpect(status().isOk());
    }
}

我检查了堆栈跟踪,但我不明白为什么我的测试可能会在 NullPointerException.

上结束

堆栈跟踪

@RestController
public class PersonController {
    
    @Autowired
    private PersonService personService;
    
    @GetMapping("/persons")
    public List<Person> getPersons() throws IOException {
    
        return personService.getPersons();
    }
}
@Service
public class PersonService {

    @Autowired
    private PersonRepository personRepository;
    public List<Person> getPersons() {

        return personRepository.findAll();
    }
}

我没注意到我的 mockMvc 错成了 static。删除它解决了问题!

@Autowired
private static MockMvc mockMvc;

@Autowired
private MockMvc mockMvc;