Мой сценарий заключается в том, что пакетное задание должно считывать данные из 1 БД (H2) и выгружать данные в другую БД (postgres). Поэтому я настроил несколько источников данных
Я написал пакетное задание с использованием пружинного пакета 4.2 и весенняя загрузка 2.2.5. ВЫПУСК. Теперь мне нужно написать тестовый сценарий для сквозного тестирования.
Я использовал пользовательский Batch Configurer с помощью ResourcelessTransactionManager, чтобы избежать сохранения метаданных таблицы пакетов в оперативной памяти и в реальной базе данных, и это работает. Однако я не могу сохранить бизнес-данные в базе данных H2 в памяти в junit, вызвав readerRepository.save (randomReader); и то же самое работает, если я заменяю базу данных H2 в памяти на postgres testconatiner в junit.
Образец junit хранилища test
@Slf4j
@SpringBootTest
@Import(LiquibaseConfigReader.class)
class ReaderRepositoryTest {
@Autowired
private ReaderRepository readerRepository;
@BeforeEach
void setUp() {
readerRepository.deleteAll();
}
@Test
void shouldFetchAllRecords() {
var randomReader = RandomDataGenerator.randomReader();
assertThat(readerRepository.findAll()).hasSize(0);
readerRepository.save(randomReader);
assertThat(readerRepository.findAll()).hasSize(1);
}
}
Я не могу понять, почему я могу сохранить данные в postgres тестовом контейнере, но не в базе данных H2 в памяти при запуске Junit Test .
Чтобы сохранить метаданные таблицы пакетов в карте памяти, я попробовал следующие решения и теперь метаданные таблицы пакета нигде не сохраняются в DB. Однако я столкнулся с проблемой jpa данных Spring в junit, как упоминалось выше.
Java Spring Batch с использованием встроенной базы данных для метаданных и вторая база данных для других данных
Пружинная загрузка + пружинная партия без источника данных
https://github.com/riversoforion/spring-batch-inmem/blob/master/src/main/java/com/example/batch/CustomBatchConfigurer.java
Это из-за ResourcelessTransactionManager? Если да, как я могу избежать сохранения метаданных таблицы партии в любой базе данных, в том числе в оперативной памяти.
Я пролистал несколько приведенных здесь вопросов, но ни один из них не может сохранить бизнес-данные в базе данных h2.