Ответ 1
Вы можете работать с тестами @Transactional
. Это позволяет запустить проверку теста результата и вернуть BD обратно в состояние предварительного тестирования.
В моем приложении используется Spring -Boot 1.4.1.RELEASE, а конфигурация моего источника данных выглядит следующим образом:
spring:
datasource:
url: ***
username: ***
password: ***
driver-class-name: oracle.jdbc.driver.OracleDriver
initial-size: 1
max-active: 100
max-idle: 30
min-idle: 1
max-wait: 0
pool-prepared-statements: true
max-open-prepared-statements: 3
Проблема в том, что последний случай моего тестирования интеграции, если он содержит логику установки @Sql
в нем, не может выполнить последнюю установку SQL. Проблема возникает редко из-за переупорядочения случаев и того факта, что для подготовки БД есть только несколько случаев с логикой установки. Конфигурация отсутствует, но одна для OracleDB и находится в ConfigClass
.
@SpringBootTest(classes = ConfigClass.class)
public class EtcTest {
@After
public void teardown() {
// teardwon X, Y, & Z
}
@Test
@Sql("setupX.sql")
@Sql("setupY.sql")
@Sql("setupZ.sql")
public void get_fromDb() {
List<Etc> list = buildExpectedList();
Obj expected = buildExpected();
Obj actual = getCallToAPI();
assertThat(rs.getX()).isEqualTo(expected.getX());
assertThat(rs.getY()).isEqualTo(expected.getY());
assertThat(rs.getZ()).containsAll(list);
}
}
Проблема, например, в приведенном выше случае, если это был последний случай интеграции,
что он не смог зафиксировать последний SQL в аннотациях @Sql
, а именно SetupZ.sql
, но данные не полностью отсутствуют, он вставляет первичный ключ, а иногда columnA
или columnB
, это как если бы что-то действительно неправильно здесь.
Может ли это возникновение или отсутствие какой-либо конфигурации? Если нет, то в чем причина?
Вы можете работать с тестами @Transactional
. Это позволяет запустить проверку теста результата и вернуть BD обратно в состояние предварительного тестирования.
Привет для тестовых классов вместо фактической базы данных, вы можете использовать такие базы данных, как DB2, derby и h2. он обеспечивает решение вашей проблемы.
для примера кода вы можете найти ниже URL Spring хранилище данных jpa в хранилище данных в памяти
Вы пытаетесь использовать JPA для сохранения. Доступны следующие настройки:
spring.jpa.show-sql=true
Тогда вы могли видеть, что пошло не так.