Как протестировать EclipseStore со встроенным диспетчером хранилища в Spring Boot?JAVA

Программисты JAVA общаются здесь
Anonymous
Как протестировать EclipseStore со встроенным диспетчером хранилища в Spring Boot?

Сообщение Anonymous »

Я работаю над приложением Java 21, Spring Boot 3.3, используя Vaadin 24 и EclipseStore 1.4.0 для встроенного хранилища. У меня возникли проблемы с настройкой простого теста, чтобы убедиться, что я могу читать и записывать в базу данных с помощью EclipseStore.
В рабочей среде моя установка работает нормально, но я изо всех сил пытаюсь получить тесты рабочие. Я хочу протестировать свой класс репозитория (

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

EclipseProjectAdapter
), который взаимодействует с EmbeddedStorageManager EclipseStore. Для моего теста я хочу использовать хранилище в памяти или временную базу данных, чтобы избежать взаимодействия с моей рабочей базой данных.
Вот что я пробовал:Тестовый класс:

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

@SpringBootTest(classes = TestConfig.class)
@Tag("database")
class EclipseProjectAdapterTest {
@Autowired
EmbeddedStorageManager storageManager;
EclipseProjectAdapter adapter;

@BeforeEach
void setUp() {
storageManager.start();
storageManager.setRoot(new DataRoot());
adapter = new EclipseProjectAdapter(storageManager);
}

@AfterEach
void tearDown() {
storageManager.shutdown();
}

@Test
void canReadAndWrite() {
List projects = adapter.findAll();
assertThat(projects).isEmpty();

Project project = Project.create("Project A");
adapter.save(project);
List allProjects = adapter.findAll();
assertThat(allProjects).hasSize(1);
assertThat(allProjects.getFirst().name()).isEqualTo("Project A");
}
}
Тестовая конфигурация:

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

@Configuration
public class TestConfig {

@Bean
@Primary
EmbeddedStorageManager inMemoryStorageManager(
@Autowired EclipseStoreProperties myConfiguration,
@Autowired EmbeddedStorageManagerFactory managerFactory,
@Autowired EmbeddedStorageFoundationFactory foundationFactory) {

String tempDir = System.getProperty("java.io.tmpdir") + "/test-store-" + UUID.randomUUID();
myConfiguration.setStorageDirectory(tempDir);
EmbeddedStorageFoundation storageFoundation = foundationFactory.createStorageFoundation(myConfiguration);

return managerFactory.createStorage(storageFoundation, false);
}
}
test/resources/application.properties

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

org.eclipse.store.storage-directory=${java.io.tmpdir}/${random.int}
Сообщение об ошибке:

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

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'org.eclipse.store.integrations.spring.boot.types.configuration.EclipseStoreProperties'
available: expected at least 1 bean which qualifies as autowire candidate.
Что я пробовал:
  • Включая eclipsestore-spring-boot- start в моем pom.xml.
  • Явное определение bean-компонентов EclipseStoreProperties, EmbeddedStorageManagerFactory и EmbeddedStorageFoundationFactory в мой TestConfig.
  • Проверка включения автоматической настройки EclipseStore.
  • Проверка правильности настройки моего тестового профиля и свойств использовать временный каталог для хранения.
Несмотря на эти усилия, я продолжаю сталкиваться с проблемами с отсутствующими компонентами, такими как EmbeddedStorageManagerFactory и EclipseStoreProperties. Я не знаю, как правильно настроить тестовую среду для EclipseStore.
Вопросы:
  • Как настроить тест Spring Boot на использование памяти или временного хранилища с EclipseStore?
  • Есть ли способ использовать TestContainers или аналогичный подход с EclipseStore для целей тестирования ?
  • Есть ли какие-либо рекомендации или примеры тестирования с помощью EclipseStore, которые могли бы помочь решить эти проблемы?
Любые рекомендации или примеры кода будут очень признательны!

Подробнее здесь: https://stackoverflow.com/questions/789 ... pring-boot

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