#java #spring #hibernate #junit #spring-data
#java #spring #спящий режим #junit #spring-данные
Вопрос:
Я создал API в spring для сохраняющегося объекта из тела JSON, и он работает нормально, но я пытаюсь создать кучу тестов, и мне нужны образцы данных для них. Я пытаюсь сохранить эти данные в тесте, используя сервис, связанный с этим объектом, но когда я пытаюсь это сделать, я получаю исключение NullPointerException. Не могли бы вы, пожалуйста, помочь мне решить эту проблему?
Класс сущности:
@Entity
@Table(name = "employees")
@NoArgsConstructor
@Data
public class EmployeeEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private int employeeId;
private String firstName;
private String lastName;
}
Служба, связанная с объектом:
@Service
public class EmployeeService {
@Autowired
EmployeeRepository employeeRepository;
public void addEmployee(EmployeeEntity employee){
employeeRepository.save(employee);
}
public Iterable<EmployeeEntity> getAllEmployees(){
return employeeRepository.findAll();
}
public Optional<EmployeeEntity> getEmployeeById(Long id){
return employeeRepository.findById(id);
}
}
Тест, который выдает исключение NullPointerException:
public class EmployeeCRUDtest {
TestUtils testUtils = new TestUtils();
@Autowired
EmployeeService employeeService;
@Test
public void shouldPersistEmployee(){
EmployeeEntity emp = testUtils.generateSingleRandomEmployee();
employeeService.addEmployee(emp);
}
}
Комментарии:
1. Посмотрите, поможет ли это руководство: baeldung.com/spring-testing-separate-data-source
Ответ №1:
Вам не хватает аннотации, которая заставляет @Autowired
работать в тестах:
@RunWith(SpringRunner.class)
public class EmployeeCRUDtest