Я создал контроллер и хочу его протестировать.
Это мой код.
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class AlertControllerTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
public void getMetric() throws Exception {
ResponseEntity<MetricDTO> response = restTemplate.getForEntity("/_api/metrics/in/1", MetricDTO.class);
Assert.assertEquals(200, response.getStatusCode().value());
}
@Test
public void getNotification() throws Exception{
ResponseEntity<NotificationDTO> response = restTemplate.getForEntity("/_api/notifications/in/1", NotificationDTO.class);
Assert.assertEquals(200, response.getStatusCode().value());
}
}
В итоге, он сначала пытается проверить, вызван ли URI, чтобы вернуть состояние 200.
Однако он пытается привести к другому VO, в отличие от моего намерения, независимо от того, искажается ли он двумя способами.
Это мой журнал ошибок.
java.lang.ClassCastException: class com.jmsight.management.dto.NotificationDTO cannot be cast to class com.jmsight.management.dto.MetricDTO (com.jmsight.management.dto.NotificationDTO and com.jmsight.management.dto.MetricDTO are in unnamed module of loader 'app')
at com.jmsight.management.AlertController$$EnhancerBySpringCGLIB$$c2c37696.getMetric(<generated>)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
Однако, если я временно закомментирую один из двух методов, а затем запущу его, он будет работать нормально.
В чем проблема ??
Примечание: с контроллером проблем нет.