본문 바로가기

Java13

[JUnit] JUnit 기능 활용하기 @DisplayName JUnit 테스트 결과 화면에 테스트 내용을 알아보기 쉽게 해주는 기능입니다. @DisplayName를 사용하지 않은 경우 @Test public void split_test() throws Exception { // given String input = "1,2"; // when String[] splitArray = input.split(","); // then assertThat(splitArray).contains("1"); assertThat(splitArray).contains("2"); } @DisplayName를 사용한 경우 @Test @DisplayName("split 했을 때 1과 2로 잘 분리되는지 확인") public void split_test() throw.. 2021. 9. 30.
[JUnit] AssertJ 활용하기 의존성 추가 스프링 부트를 사용한다면 test 관련 의존성에 기본으로 추가되어 있습니다. 스프링 부트를 사용하지 않는다면 아래 의존성을 추가해줍니다. dependencies { testImplementation 'org.assertj:assertj-core:3.19.0' ... } 이제부터는 성공하는 케이스만 작성되어 있으니 개별적으로 실패하는 케이스도 테스트 해보길 권장드립니다. contains 결과가 배열로 반환되는 경우 contains()를 활용해 기대하는 값이 배열에 포함되어 있는지 확인합니다. 예시 코드 @Test @DisplayName("split 했을 때 1과 2로 잘 분리되는지 확인") public void split_여러개() throws Exception { // given String.. 2021. 9. 30.
[테스트] Mockito를 사용하여 단위 테스트하기 저 같은 경우 비즈니스 로직을 테스트 할 때는 통합 테스트를 하지 않고 단위 테스트를 진행합니다. 이 때 Service 클래스는 Repository 계층 또는 외부 API 등을 의존하고 있기 때문에 Mockito를 이용하여 이들을 Mocking 해주어야 합니다. Service 코드 /** * 외부채널 추가 연동 */ @Transactional public BranchChannelOpenResponseDto openBranchChannel(BranchChannelOpenRequestDto requestDto) { // BranchChannelId 생성(복합키) BranchChannelId branchChannelId = BranchChannelId.create(requestDto); // BranchCha.. 2021. 9. 9.
[Effective Java] 아이템11 - equals를 재정의하려거든 hashCode도 재정의하라 equals를 재정의한 클래스 모두에서 hashCode도 재정의해야 합니다. 그렇지 않으면 hashCode 일반 규약을 어기게 되어 해당 클래스의 인스턴스를 HashMap이나 HashSet 같은 컬렉션의 원소로 사용할 때 문제를 일으킬 것입니다. Object 명세에서 발췌한 규약 equals 비교에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 사용되는 동안 그 객체의 hashCode 메서드는 몇 번을 호출해도 일관되게 항상 같은 값을 반환해야 합니다. 단, 애플리케이션을 다시 실행한다면 이 값이 달라져도 상관 없습니다. equals(Object)가 두 객체를 같다고 판단했다면, 두 객체의 hashCode는 똑같은 값을 반환해야 합니다. equals(Object)가 두 객체를 다르다고 판단했더라도, .. 2021. 9. 9.