테스트코드 이론 (2)

양말·2024년 6월 14일
0

SpringTestCode

목록 보기
3/10
post-thumbnail

해당 포스트는 인프런의 Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트 강의의 도움을 받았습니다

앞으로 테스트할 때 필요한 개념

여러가지 새로운 용어를 배워 봅시다.

SUT

System Under Test, 테스트하려는 대상입니다.

이 예시에서는 user에 해당합니다.

BDD

Behaviour driven development

given, when, then의 형태를 가지고 있습니다.

행동에 집중하는 테스트를 말합니다.

상호 작용 테스트 (행위 검증)

그 함수가 어떻게 호출되는지를 검증하는 기법입니다.

강의에서는 추천하지 않고 있습니다.

내부 구현을 어떻게 했는지 감시하는 것은 곧 구현에 집착하는 것이며, 결국 캡슐화에 위배되기 때문입니다.

객체에 위임한 역할을 객체가 잘 수행하는지를 확인하는 것이 더 올바르다고 합니다.

상태 검증

이와는 달리 객체가 역할을 잘 수행하여 알맞은 결과를 도출하는지를 검증하는 것입니다.

텍스트 픽스처

테스트에 필요한 자원을 할당하는 것을 말합니다.

비욘세 규칙

유지하고 싶은 상태가 있으면 전부 테스트로 작성해 주세요.

그게 곧 정책이 됩니다.

유저 아이디가 이메일이었으면 좋겠다면 ➡️ 이메일 형식이 아닐 때 예외를 던지세요.

이런 테스트가 모여 정책이 됩니다.

Testablility

소프트웨어가 테스트 가능한 구조인가?

너무 중요한 내용이라 나중에 다루겠습니다.

test double

테스트 대역입니다.

회원가입에 이메일 발송이 필요하다면, 테스트 시 실제로 이메일을 발송할 수는 없습니다.

이때 이메일 발송할 때 가짜인 테스트 대역을 사용할 수 있습니다.

대역

테스트 대역에는 여러 종류가 있습니다.

Dummy

아무것도 하지 않는 객체입니다.

Fake

자체적인 로직을 가져, 테스트를 위해 만들어진 가짜 객체입니다.

실제로 이메일을 만드는 데 성공했는지 확인할 수 있습니다.

Stub

미리 준비된 값을 출력하는 객체입니다.

mockito 프레임워크를 사용할 수 있습니다.

Mock

사실상 테스트 더블과 동일한 의미로 사용이 됩니다.

Dummy, Fake, Stub 모두 Mock이라고 볼 수 있습니다.

Spy

메소드 호출을 전부 기록했다가 나중에 확인하기 위한 객체입니다.

질문하기

  1. 하나의 테스트에 sut가 여러개인 경우도 있을까요?
  2. Spy는 어떤 상황에 활용되는 걸까요?
profile
코끼리

0개의 댓글