получаю NotFoundException при запуске integrationTest

Рейтинг: 1Ответов: 0Опубликовано: 06.06.2023

Пробую написать интеграционый тест слоя сервиса. И на первом же методе сохранения данных в БД получаю ошибку. Записываю объект User в БД и в этом же методе пробую его прочитать и в ответ получаю пустой объект.

Класс сущности

@Getter@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class UserEntity {
@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Access(AccessType.PROPERTY)
    private I id;
    
    private String name;
}

Сервис

@RequiredArgsConstructor
@Service
@Transactional
public class UserServiceImpl implements UserService {

    private final UserRepository userRepository;

    @Override
    public UserEntity create(UserEntity object) {
        return UserRepository.save(object);
    }

    @Override
    public UserEntity get(Long id) {
        return UserRepository.findById(id)
            .orElseThrow(() -> new NotFoundException(USER_NOT_FOUND));        
    }        
}

Для тестов использую БД h2, настройки стандартные

spring:
  datasource:
    url: jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE
    driverClassName: org.h2.Driver
    username: sa
    password: password

Итерационые тесты для слоя сервиса

@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UserIntTest {
  
    @Autowired
    private UserService UserService;
 
    @Test
    public void saveUser_shouldOK() {
        var result = userService.create(User_02);

        var user = userService.get(2L);

        assertThat(result, notNullValue());
        assertThat(result.getId(), is(1L));
    }
}

Сохраняю пользователя в БД и при чтении получаю NotFoundException. Почему я не могу прочитать данные из БД? И как это исправить?

Ответы

Ответов пока нет.