Неожиданный результат от модульного тестирования методов CRUD из сервисного уровня - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь выполнить модульное тестирование методов crud из своего сервисного уровня, я написал правильный код (я думаю), но AssertTrue дает мне противоположный результат, который я ожидал. (Java.lang.AssertionError:)

Мой тестовый код выглядит следующим образом:

StudentServiceTest

@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("test")
@SpringBootTest
public class StudentServiceTest {

    private static final String STUDENT_NAME = "Henkie";

    @Autowired
    private StudentServiceImpl studentService;

    @Autowired
    private StudentRepository studentRepository;


    @Test
    public void createStudent(){
        //arrange
        Student student = new Student();
        student.setStudentName(STUDENT_NAME);
        studentService.save(student);

        List<Student> students = studentService.findAll();

        assertNotNull(students);
        assertTrue("created a student" ,students.contains(student));
    }

StudentService

public interface StudentService {

    List<Student> findAll();

    Student save(Student student);

    Optional<Student> findById(Long id);

    void deleteById(Long id);

    Iterable<Student> findAllIteratable();      
}

StudentServiceImpl

@Service
@RequiredArgsConstructor
public class StudentServiceImpl implements StudentService {

    @Autowired
    private final StudentRepository studentRepository;


    public List<Student> findAll() {
        return Lists.newArrayList(studentRepository.findAll());
    }    

    public Student save(Student student) {
        return studentRepository.save(student);
    }

    public Optional<Student> findById(Long id) {
        return studentRepository.findById(id);
    }

    public void deleteById(Long id) {
        studentRepository.deleteById(id);
    }

}

StudentRepository

public interface StudentRepository extends CrudRepository<Student, Long> {

}

После отладки видно, что ученик успешно создается и также добавляется в список.Но, как видно, он сохранен в Student @ 10172, а в Списке студентов он сохранен в Student @ 10482.Все предыдущие записи в списке являются результатом предыдущих попыток тестирования.

enter image description here

1 Ответ

1 голос
/ 17 июня 2019

К сожалению, я не могу комментировать, так как у меня нет представителя, но ... Если у вас есть студент, и вы добавляете его в постоянный объект, и вы читаете его обратно, и он присутствует в коллекции.Тогда единственный реальный вопрос, который нужно задать, - переопределяете ли вы хэш-код и равны ли он в вашем классе Student?

В противном случае содержимое будет искать тот же объект, а не одно и то же представление ученика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...