Java - TestRestTemplate не может подключиться к TestContainer (MySQL 8.0)MySql

Форум по Mysql
Ответить
Anonymous
 Java - TestRestTemplate не может подключиться к TestContainer (MySQL 8.0)

Сообщение Anonymous »

Я запускаю интеграционные тесты в приложении Spring Boot MVC и сталкиваюсь с ошибкой внутреннего сервера 500 при вызове моей конечной точки с использованием TestRestTemplate. После отладки я обнаружил, что мой TestRestTemplate не может подключиться к экземпляру TestContainers, выполняющему MySQL 8.0. Мой сотрудник Service (EMP-S) общается с сервером местоположения (LOC-S) через Spring Discovery/Eureka Server (DIS-S) с использованием OpenFeign.
< /li>
[*] Мне нужны два тестирования: employee_db и location_db. < /p>
< /li>
Тесты - это Установка с использованием Spring Boot TestContainers. < /p>
< /li>
MySQL 8.0 используется в настройке TestContainers, в то время как Application-test.yml настроен на использование базы данных HSQLDB в памяти также для моих модульных тестов (возможный конфликт?). < /p>
< /li>
< /ul>
configuration-testContainers:

Код: Выделить всё

@ActiveProfiles("test")
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Import(EurekaMockServer.class)
public abstract class IntegrationTestConfiguration {

@LocalServerPort
private Integer port;

protected String getBaseUrl() {
return "http://localhost:" + port;
}

@Container
@ServiceConnection
public static MySQLContainer mySQLContainerLocation = new MySQLContainer("mysql:8.0")
.withUsername("root")
.withPassword("test_password_db")
.withDatabaseName("location_db");

@Container
@ServiceConnection
public static MySQLContainer mySQLContainerEmployee = new MySQLContainer("mysql:8.0")
.withUsername("root")
.withPassword("test_password_db")
.withDatabaseName("employee_db");

static {
mySQLContainerLocation.start();
mySQLContainerEmployee.start();
}
}
Controller-employeecontroller.java

Код: Выделить всё

@RestController
@RequestMapping("/v1/emp")
@RequiredArgsConstructor(onConstructor_ = @__(@Autowired))
public class EmployeeController {

private final EmployeeService employeeService;
private final Logger logger = LoggerFactory.getLogger(EmployeeController.class);

@GetMapping("/all")
public ResponseEntity getAll() {
List allEmployees = employeeService.getAll();
logger.info("GET '/all' - Selecting all Employees");
return ResponseEntity.ok(allEmployees);
}
}
тест интеграции-usmenteecontrollertest.java:

Код: Выделить всё

@ActiveProfiles("test")
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@RequiredArgsConstructor(onConstructor_ = @__(@Autowired))
public class EmployeeControllerIT extends IntegrationTestConfiguration {

private final TestRestTemplate testRestTemplate;

@Test
@Order(1)
@DisplayName("ITest for getAll() function (success) - EmployeeController")
public void EmployeeControllerIT_GetAll_ReturnAllEmployeeDTOS() {

System.out.println(getBaseUrl());

ResponseEntity response = testRestTemplate.exchange(
getBaseUrl() + "/v1/emp/all",
HttpMethod.GET,
null,
String.class
);

System.out.println("Response Body: " + response.getBody());
}
}
test test topture logs:
http://localhost:52734
Response Body: {"timestamp":"2025-02-25T02:31:44.417+00:00","status":500,"error":"Internal Server Error","path":"/v1/emp/all"}

org.opentest4j.AssertionFailedError:
expected: 200 OK
but was: 500 INTERNAL_SERVER_ERROR
< /code>
Потенциальные проблемы и наблюдения < /h2>

Конфликт базы данных? < /li>
< /ol>

application-test.yml использует hsqldb, но мои тестовые контейнеры используют mysql. < /p>
< /li>
Должен ли я переопределить свойства данных профиля тестового профиля, чтобы использовать MySQL? 2 ">
Eureka Promplocing проблема? может потерпеть неудачу, если макетный сервер не настроен должным образом. p>
< /li>
< /ul>

Проблема с автоматической конфигурацией пружинной загрузки? < /li>
< /ol>

@serviceconnection аннотации должны подключить правильный данных, но Spring Boot все еще использует HSQLDB по умолчанию из-за приложения test.yml?

Должен ли я вручную настроить spring.datasource.url в моих тестовых свойствах?
< /li>
< /ul>

testresttemplate не достигает службы? < /li>
< /ol>

Базовый URL (http: // localhost: ) является правильным, но что -то ломается.

Должен ли я проверять журналы на наличие пропущенных конфигураций бобов? .yml:
spring:
datasource:
url: jdbc:hsqldb:mem:testdb
driver-class-name: org.hsqldb.jdbc.JDBCDriver
username: sa
password: sa
jpa:
hibernate:
ddl-auto: update
< /code>
Окончательный вопрос: < /h2>
Учитывая мою настройку, что вызывает ошибку внутреннего сервера 500 во время моего интеграционного теста, и как я могу обеспечить правильное подключение testresttemplate Для тестирования, управляющих MySQL?
Любая помощь будет очень оценена!>

Подробнее здесь: https://stackoverflow.com/questions/794 ... -mysql-8-0
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»