Assertions 메서드 인자 순서
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
회원 리포지토리 테스트 케이스 작성 강의에서 assertEquals(A, B), assertThat(A).isEqualTo(B)에 대한 질문이 있습니다. 두가지 메서드 모두 A와 B의 순서가 크게 중요하지 않아보이는데 그런가요?
다르다면, 첫번째 메서드는 member를 앞에 넣으시고, 뒤에 메서드는 member1을 뒤에 넣으셨는데, 메서드를 어떻게 해석해야할까요? junit 문서를 찾아보아도 그런 설명이 없네요..
回答 1
1
둘 다 순서가 중요합니다.
Assertions.assertEquals(A, B) 에서
A : expected (기댓값)
B : actual (실제 값)
Assertions.assertThat(A).isEqualTo(B) 에서
A : actual (실제 값)
B : expected (기댓값)
즉, 각 메소드별로 A와 B의 의미가 다르기 때문에
영한님께서 강의에 그렇게 내용을 포함하셨을거라 생각합니다.
=======================================================
예를 들어, 계산기 프로그램의 add(int, int) 메소드를 테스트한다고 했을 때
Assertions.assertEquals(8, Calc.add(3, 5)) 가 옳은 표현이며, 그 반대인
Assertions.assertEquals(Calc.add(3, 5), 8) 은 부적절한 표현입니다.
만약 add 메소드가 잘못 개발되어 Calc.add(3, 5) -> 5 가 반환된다고 가정해봅시다. 테스트에 실패했을 때, 발생하는 에러메시지를 본다면
전자 : 기댓값이 8이지만, 실제로 5가 나왔어.
후자 : 기댓값이 5이지만, 실제로 8이 나왔어.
와 같은 맥락으로 출력됩니다.
Assertions.assertThat 은 isEqualTo 만 놓고보면 A, B의 순서가 중요하지 않아보일 수 있지만,
범위를 테스트하는 코드 예시를 하나 작성해드리겠습니다. 아래 코드 보시면 바로 이해가 가실겁니다.
assertThat(result)
.isGreaterThan(0)
.isLessThan(10);
1
actual (실제 값) expected (기댓값) 으로 인해 헷갈린 것 같습니다.
답변 주신 내용을 다시 정리하자면 실제 값은 테스트에 쓰이는 값으로 result가 되며 기대 값은 꼭 나와야 하는 값으로 member가 되는 것 입니다.
따라서 두 가지 메서드에서 인자의 순서는 중요하다 라고 이해해했습니다. 제가 이해한 바가 맞을까요?
..
0
76
2
Unused property.....
0
99
2
project JDK is misconfigured
0
132
2
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
0
82
2
단위/통합 테스트 버전충돌 문제
0
91
2
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
0
229
1
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
0
102
2
윈도우 build test오류 질문
1
102
2
테스트 관련 공부에 대한 조언을 얻고 싶습니다
0
99
2
테스트 실행 시 에러 질문
0
291
1
name을 통한 비교와 객체를 통한 비교
0
77
1
빌드 후 libs 없음
1
129
1
윈도우 gradlew.bat 에러
0
167
1
@PostMapping("/members/new")가 동작하지 않습니다
0
88
1
java static class와 kotlin class
0
77
1
스프링 DB연결
0
126
1
소요 시간
0
85
2
ddl.sql에 빨간 밑줄
1
101
2
welcome page 에러
0
181
3
잘 모르겠습니다.
0
163
2
fail을 똑같이 쳤는데 오류가 발생해요
0
156
2
index.html Welcome page
0
121
1
프로젝트 gradle-groovy ?
0
369
1
테스트코드 메서드명 한글
0
201
2

