250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 오블완
- 코드트리조별과제
- ocp
- java
- equals()
- 참조변수
- 의존관계
- html form
- 프록시
- DI
- 김영한
- 백준
- 싱글톤
- 오버라이딩
- 다형성
- @configuration
- fielderror
- HttpServletResponse
- 서블릿
- 스프링컨테이너
- http 메시지 컨버터
- JSON
- 추상클래스
- objecterror
- 코드트리
- 코딩테스트
- 티스토리챌린지
- 테스트코드
- 인터페이스
- 스프링
Archives
- Today
- Total
minOS
스프링 핵심 원리 이해1 - 예제 만들기 본문
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
https://limkydev.tistory.com/50
해당 블로그를 참고하였습니다.
728x90
'TIL > 김영한의 스프링 핵심 원리' 카테고리의 다른 글
스프링 핵심 원리 이해2 - 객체 지향 원리 적용(2) (2) | 2024.01.24 |
---|---|
스프링 핵심 원리 이해2 - 객체 지향 원리 적용(1) (0) | 2024.01.18 |
객체 지향 설계와 스프링 - 좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2024.01.17 |
객체 지향 설계와 스프링 - 좋은 객체 지향 프로그래밍이란? (0) | 2024.01.16 |
객체 지향 설계와 스프링 - 스프링이란 ? (0) | 2024.01.15 |