получаю NotFoundException при запуске integrationTest
Пробую написать интеграционый тест слоя сервиса. И на первом же методе сохранения данных в БД получаю ошибку. Записываю объект 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. Почему я не могу прочитать данные из БД? И как это исправить?
Источник: Stack Overflow на русском