Я пытаюсь реализовать тестирование junit с приложением spring data jpa. На уровне контроллера я пытаюсь реализовать модульное тестирование. Но я получаю сообщение об ошибке исключения класса сбоя теста.
DepartmentController.java
@RestController
@RequestMapping("/api.spacestudy.com/SpaceStudy/Control/SearchFilter")
public class DepartmentController {
@Autowired
DepartmentService depService;
@CrossOrigin(origins = "*")
@GetMapping("/loadDepartments")
public ResponseEntity<Set<Department>> findDepName() {
Set<Department> depname = depService.findDepName();
return ResponseEntity.ok(depname);
}
}
Тестовый класс Junit
@RunWith(SpringRunner.class)
@WebMvcTest(DepartmentController.class)
public class SpaceStudyControlSearchFilterApplicationTests {
@Autowired
DepartmentController depController;
@Autowired
private MockMvc mockMvc;
@MockBean
DepartmentService depService;
@SuppressWarnings("unchecked")
Set<Department> mockDepartment = (Set<Department>) new Department(21629, "170330", "Administrative Computer");
@Test
public void findDepNameTest() throws Exception {
Mockito.when(depService.findDepName()).thenReturn( mockDepartment);
RequestBuilder requestBuilder = MockMvcRequestBuilders.get(
"/api.spacestudy.com/SpaceStudy/Control/SearchFilter/loadDepartments").accept(
MediaType.APPLICATION_JSON);
MvcResult result = mockMvc.perform(requestBuilder).andReturn();
System.out.println(result.getResponse());
String expected = "{nDeptId: 21629}";
JSONAssert.assertEquals(expected, result.getResponse().getContentAsString(), false);
}
}
Отказ Junit
java.lang.ClassCastException: com.spacestudy.model.Department cannot be cast to java.util.Set
at com.spacestudy.SpaceStudyControlSearchFilterApplicationTests.<init>(SpaceStudyControlSearchFilterApplicationTests.java:39)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
Я новичок в тестировании junit. Может ли кто-нибудь сказать мне, что я делаю неправильно в тесте?





Вы пытаетесь преобразовать Department в Set<Department> в этой строке:
Set<Department> mockDepartment = (Set<Department>) new Department(21629, "170330", "Administrative Computer");
Это не сработает. Вместо этого вы должны создать пустой набор, а затем добавить отдел, т.е. вот так:
Set<Department> mockDepartment = new HashSet<Department>() {{
add(new Department(21629, "170330", "Administrative Computer"));
}};