Я тестирую метод удаления в своем классе обслуживания, и он не будет удалять строки из базы данных.Когда я использую тот же метод, когда приложение работает, оно работает нормально.Я использую плагин MySQL и H2database для тестирования приложения.Другие методы тестирования CRUD работают просто отлично.
Тестовый класс
@RunWith(SpringRunner.class)
@SpringBootTest
public class StudentAccountApplicationTests {
@Autowired
StudentAccountService studentAccountService;
@Test
public void testStudentAccountDeletion(){
Student student1 = new Student ("john","smith","studying");
Student student2 = new Student ("will","ferrel","finished");
Student student3 = new Student ("louis","johnsson","finished");
StudentAccount studentAccount1 = new StudentAccount ("josm","josm","studying", student1 );
StudentAccount studentAccount2 = new StudentAccount ("wife","wife","studying", student2);
StudentAccount studentAccount3 = new StudentAccount ("lojo","lojo","studying", student3);
studentService.save(student1);
studentService.save(student2);
studentService.save(student3);
studentAccountService.save(studentAccount1);
studentAccountService.save(studentAccount2);
studentAccountService.save(studentAccount3);
List<StudentAccount> studentAccountsToDelete = studentAccountService.getStudentAccountsFromFinishedStudents();
studentAccountService.deleteStudentAccountsFromFinishedStudents(studentAccountsToDelete);
List<StudentAccount> studentAccountsAfterDeletion = studentAccountService.getAllStudentAccounts();
assertEquals(1, studentAccountsAfterDeletion.size());
}
}
StudentAccountServiceImpl
public class StudentAccountServiceImpl implements StudentAccountService {
@Autowired
StudentAccountRepository studentAccountRepository;
@Override
public void deleteStudentAccount(StudentAccount studentToDelete) {
studentAccountRepository.delete(studentToDelete);
}
@Override
public void deleteStudentAccountsFromFinishedStudents(List<StudentAccount> studentAccountsToDelete) {
studentAccountsToDelete.forEach(studentAccount -> {
deleteStudentAccount(studentAccount);
});
}
}
Тест не пройден, поскольку учетные записи студентов не удаляютсяпоэтому размер списка равен 3 вместо 1. Как указывалось ранее, метод studentAccountsToDelete
работает нормально при запуске приложения.Я не знаю, в чем здесь разница, если все другие методы CRUD работают.Я предполагаю, что есть проблема с базой данных H2.Нужна помощь.Заранее спасибо