Я новичок в Spring Boot, и мне очень нравится, особенно когда дело доходит до устранения шаблона кода. я создал тестовый класс, чтобы проверить мой @RestController:Как отлаживать приложение Spring Boot от SpringBootTest
@RunWith(SpringRunner.class)
@SpringBootTest(classes = NewBusinessRevitalizationApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(properties = {"management.port=0"})
public class NBRControllerTest extends TestCase {
@LocalServerPort
private int port;
@Value("${local.management.port}")
private int mgt;
@Autowired
private TestRestTemplate testRestTemplate;
@Test
public void getApplicationByAgencyIdAndStatusTest() {
String uri = "http://localhost:" + this.port + "/nbr-services/applications/{status}?agencyIds=123456,56765,678576";
Map<String, String> vars = new HashMap<String, String>();
vars.put("status", "SAVED");
ResponseEntity<String> response = testRestTemplate.getForEntity(uri, String.class, vars);
assertEquals(HttpStatus.OK, response.getStatusCode());
}
}
Если я запустить его в режиме отладки, я могу только отладить класс Test, а не мой @RestController класс:
@RestController
@RequestMapping("/nbr-services")
public class NBRController {
@Autowired
private NBRServices nbrServices;
private static Logger logger = LoggerFactory.getLogger(NBRController.class);
@RequestMapping(value = "/configuration/environment/{environment}", method = RequestMethod.GET)
@ResponseBody
public String getConfiguration(@PathVariable("environment") String environment) throws RemoteException {
logger.debug("environment={}", environment);
String result = nbrServices.getConfiguration(environment);
return result;
}
У меня есть попытался настроить порт отладки Tomcat, но не повезло. Единственный способ, которым я могу отлаживать свой @RestController, - запустить его в режиме отладки и вызвать мой RestAPI из браузера, но я хочу использовать свой модульный тест. Заранее спасибо.
Можете ли вы объяснить, как отладить RestController? Я перешел на SpringBootTest.WebEnvironment.DEFINED_PORT, вы предложили, но все же пропустите точки торможения. – carlitos081
В вашей настройке отладка должна работать нормально. Одна вещь, которую нужно проверить, - это то, что ваш звонок для отдыха будет на сервере, который вы так считаете. У вас есть другие запущенные экземпляры, которые не находятся в режиме отладки? заставляет порт быть чем-то отличным от нормы, например. server.port = 9123 в application.properties/yaml, затем выполните netstat, чтобы проверить, что он запущен и запущен при запуске теста. Также попробуйте поставить точку останова на линии в методе postConstruct, чтобы убедиться, что вы нажимаете приложение, которое вы запускаете в тесте. – PaulNUK
Я нахожусь в правильных сервисах, потому что это @SpringBootTest, который запускает службу для вызова, проблема в том, что из Intellij, если я запускаю тестирование модуля в режиме отладки, он запускает тест в отладке, но не в службе – carlitos081