minOS

스프링 핵심 원리 이해1 - 예제 만들기 본문

TIL/김영한의 스프링 핵심 원리

스프링 핵심 원리 이해1 - 예제 만들기

minOE 2024. 1. 17. 23:44
728x90

김영한 강사님 커리큘럼에 따라서 비지니스 요구사항과 설계에 따라 최소한의 스프링 Dependency를 사용하여 코드를 짜보고 있습니다.

테스트 코드를 작성하던 중 

package com.example.core.member;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;


public class MemberServiceTest {
    MemberService memberService = new MemberServiceImpl();
    @Test
    void join(){
        //given
        Member member = new Member(1L,"memberA",Grade.VIP);


        //when
        memberService.join(member);
        Member findMember = memberService.findMember(1L);
        //then
        Assertions.assertEquals(member.getName(),findMember.getName());      
    }
}

 위 코드와

package com.example.core.member;

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;


public class MemberServiceTest {
    MemberService memberService = new MemberServiceImpl();
    @Test
    void join(){
        //given
        Member member = new Member(1L,"memberA",Grade.VIP);


        //when
        memberService.join(member);
        Member findMember = memberService.findMember(1L);
        //then
        Assertions.assertThat(member).isEqualTo(findMember);
    }
}

 

위 코드 테스트 코드 모두 잘 동작하여 차이점을 알고 싶어 GPT 에게 물어보았습니다.

`Assertions.assertEquals(member.getName(), findMember.getName())`와 `Assertions.assertThat(member).isEqualTo(findMember)`는 각각 JUnit 5의 `Assertions` 클래스와 AssertJ 라이브러리의 `Assertions.assertThat()`을 사용하여 작성된 테스트 코드입니다. 이 두 코드의 주요 차이점은 다음과 같습니다:

1. 표현력과 가독성: - JUnit 5의 `Assertions` 클래스를 사용한 코드는 값의 동등성을 비교하는 메서드 `assertEquals`를 사용합니다. 이는 비교 연산이 좀 더 명시적으로 드러나게 하는 장점이 있습니다. 그러나 객체의 속성이 많거나 복잡한 구조를 가지면 비교가 불편해질 수 있습니다. - AssertJ의 `Assertions.assertThat()`를 사용한 코드는 메서드 체이닝을 통해 좀 더 표현력 있고 가독성이 높은 테스트 코드를 작성할 수 있습니다. `isEqualTo` 메서드는 객체의 동등성을 비교하는데 사용되며, 다양한 매처를 활용하여 다양한 조건으로 객체를 검증할 수 있습니다.

2. 추가적인 매처 활용: - JUnit 5의 `assertEquals` 메서드는 기본적인 동등성 비교만 가능하며, 더 복잡한 조건을 표현하기 어렵습니다. 만약 객체의 여러 속성 중 하나만 비교하거나, 커스텀 매처를 사용하려면 추가적인 코드가 필요합니다. - AssertJ의 `isEqualTo` 메서드를 사용하면 다양한 매처를 활용하여 더 유연하게 테스트할 수 있습니다. 예를 들어 `isEqualTo`, `isNotEqualTo`, `hasFieldOrPropertyWithValue` 등 다양한 메서드를 사용하여 테스트 조건을 정의할 수 있습니다.

종합적으로, AssertJ를 사용한 코드는 표현력이 높고 가독성이 좋으며, 다양한 매처를 활용하여 더 유연하게 테스트할 수 있습니다. 하지만 프로젝트의 테스트 스타일이나 팀의 규칙에 따라 JUnit 5의 `assertEquals`를 사용할 수도 있습니다.

 

이 외에도 

https://velog.io/@msung99/Git-Commit-Message-Convension

 

[Git] Commit Message Convension (협업을 위한 git 커밋컨벤션)

이번 포스팅에서는 Git 의 커밋 메시지 컨벤션에 대해 알아보겠습니다. 각 회사마다 각자의 git flow 전략을 가지고 브랜치를 관리하듯이, 그에 따라가며 자연스래 commit 에 관한 규칙도 정말 중요

velog.io

 

https://limkydev.tistory.com/50

 

[Java] enum 이란?

Enum class란? 우리가 흔히 상수를 정의할 때 final static string 과 같은 방식으로 상수를 정의를합니다. 하지만 이렇게 상수를 정의해서 코딩하는 경우 다양한 문제가 발생됩니다. 따라서 이러한 문제

limkydev.tistory.com

해당 블로그를 참고하였습니다.

728x90