해당 포스트는 인프런의 Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트 강의의 도움을 받았습니다
여러가지 새로운 용어를 배워 봅시다.
System Under Test, 테스트하려는 대상입니다.
이 예시에서는 user에 해당합니다.
Behaviour driven development
given
, when
, then
의 형태를 가지고 있습니다.
행동에 집중하는 테스트를 말합니다.
그 함수가 어떻게 호출되는지를 검증하는 기법입니다.
강의에서는 추천하지 않고 있습니다.
내부 구현을 어떻게 했는지 감시하는 것은 곧 구현에 집착하는 것이며, 결국 캡슐화에 위배되기 때문입니다.
객체에 위임한 역할을 객체가 잘 수행하는지를 확인하는 것이 더 올바르다고 합니다.
이와는 달리 객체가 역할을 잘 수행하여 알맞은 결과를 도출하는지를 검증하는 것입니다.
테스트에 필요한 자원을 할당하는 것을 말합니다.
유지하고 싶은 상태가 있으면 전부 테스트로 작성해 주세요.
그게 곧 정책이 됩니다.
유저 아이디가 이메일이었으면 좋겠다면 ➡️ 이메일 형식이 아닐 때 예외를 던지세요.
이런 테스트가 모여 정책이 됩니다.
소프트웨어가 테스트 가능한 구조인가?
너무 중요한 내용이라 나중에 다루겠습니다.
테스트 대역입니다.
회원가입에 이메일 발송이 필요하다면, 테스트 시 실제로 이메일을 발송할 수는 없습니다.
이때 이메일 발송할 때 가짜인 테스트 대역을 사용할 수 있습니다.
테스트 대역에는 여러 종류가 있습니다.
아무것도 하지 않는 객체입니다.
자체적인 로직을 가져, 테스트를 위해 만들어진 가짜 객체입니다.
실제로 이메일을 만드는 데 성공했는지 확인할 수 있습니다.
미리 준비된 값을 출력하는 객체입니다.
mockito 프레임워크를 사용할 수 있습니다.
사실상 테스트 더블과 동일한 의미로 사용이 됩니다.
Dummy, Fake, Stub 모두 Mock이라고 볼 수 있습니다.
메소드 호출을 전부 기록했다가 나중에 확인하기 위한 객체입니다.