Может быть, кто-то может сказать мне, почему я всегда получаю исключение NullPointerException при тестировании моего контроллера.
Это говорит мне, что NullPointerException происходит здесь:
mvc.perform(get("/passwordaenderung"))
Вот мой код:
public class LagerstandortControllerTest {
@InjectMocks
private PasswordChange passwordChange;
// add @Mock annotated members for all dependencies used by the controller here
private MockMvc mvc;
// add your tests here using mvc.perform()
@Test
public void getHealthStatus() throws Exception {
mvc.perform(get("/passwordaenderung"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.status", is("OK")));
}
@Before
public void createControllerWithMocks() {
MockitoAnnotations.initMocks(this);
MockMvcBuilders.standaloneSetup(new PasswordChange()).build();
}
}
Чего я хочу добиться, так это протестировать мой контроллер без загрузки всего ApplicationContext.
Мне пришлось адаптировать его, чтобы избежать исключения NullPointerException:
Введен новый класс:
public class StandaloneMvcTestViewResolver extends InternalResourceViewResolver {
public StandaloneMvcTestViewResolver() {
super();
}
@Override
protected AbstractUrlBasedView buildView(final String viewName) throws Exception {
final InternalResourceView view = (InternalResourceView) super.buildView(viewName);
// prevent checking for circular view paths
view.setPreventDispatchLoop(false);
return view;
}
}
И в моем методе настройки:
@Before
public void setUp() {
final MainController controller = new MainController();
mvc = MockMvcBuilders.standaloneSetup(controller)
.setViewResolvers(new StandaloneMvcTestViewResolver())
.build();
}
Единственная проблема теперь, когда я получаю ошибку 404.
Должен ли я поместить свой index.html в
/src/test/resources
тоже
![enter image description here](https://i.stack.imgur.com/21eM4.jpg)