ํด๋์ค์์
- Command + Shift + T : Create Test
ํ์๊ฐ์ ๋ฉ์๋ ํ ์คํธ
class MemberServiceTest {
MemberService memberService = new MemberService();
@Test
void ํ์๊ฐ์
() { // ํ
์คํธ๋ ์ง๊ด์ ์ผ๋ก ์์๋ณด๊ธฐ ์ฝ๊ฒ ํ๊ธ๋ก ์์ฑํด๋ ๋ฌด๋ฐฉํ๋ค
//given ๋ฌด์ธ๊ฐ ์ฃผ์ด์ก์ ๋ , ๋ฐ์ดํฐ
Member member = new Member();
member.setName("hello");
//when ์ด๊ฒ์ ์คํํ์ ๋ , ๊ฒ์ฆ
Long saveId = memberService.join(member);
//then ๊ฒฐ๊ณผ๊ฐ ์ด๋ ๊ฒ ๋์จ๋ค ,
Member findMember = memberService.findOne(saveId).get();
assertThat(member.getName()).isEqualTo(findMember.getName());
}
MemberService Class
/**
* ํ์ ๊ฐ์
*/
public Long join(Member member) {
// ๊ฐ์ ์ด๋ฆ์ด ์๋ ์ค๋ณต ํ์X
validateDuplicateMember(member); // ์ค๋ณต ํ์ ๊ฒ์ฆ
memberRepository.save(member);
return member.getId();
์์ธ ๊ฒ์ฆ ์ค์ !!
validateDuplicateMember(member); // ์ค๋ณต ํ์ ๊ฒ์ฆ
try , catch ์์ธ์ฒ๋ฆฌ
@Test
public void ์ค๋ณต_ํ์_์์ธ() {
//given
Member member1 = new Member();
member1.setName("spring");
Member member2 = new Member();
member2.setName("spring"); // member2 ๋ ๋๊ฐ์ด "spring"
//when
memberService.join(member1);
try{
memberService.join(member2); // name ์ด ๋๊ฐ๊ธฐ ๋๋ฌธ์
fail();
}catch (IllegalStateException e){
assertThat(e.getMessage()).isEqualTo("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค.");
}
assertThrows ์์ธ์ฒ๋ฆฌ
assertThrows(IllegalStateException.class, () -> memberService.join(member2));
assertThrows
assertThrows ๋ฉ์์ง ๋ฐํํ์ฌ ๊ฒ์ฆ
IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));
assertThat(e.getMessage()).isEqualTo("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค.");
ํ๋ฒ์ ์ฌ๋ฌ ํ ์คํธ๋ฅผ ์คํํ๋ฉด ๋ฉ๋ชจ๋ฆฌ DB์ ์ง์ ํ ์คํธ์ ๊ฒฐ๊ณผ๊ฐ ๋จ์ ์ ์๋ค.
์ด๋ ๊ฒ ๋๋ฉด ๋ค์ ์ด์ ํ ์คํธ ๋๋ฌธ์ ๋ค์ ํ ์คํธ๊ฐ ์คํจํ ๊ฐ๋ฅ์ฑ์ด ์๋ค
๋ฐ์ดํฐ๋ฅผ ํด๋ฆฌ์ด ํด์ค์ผํจ - (9)์ฅ ์ฐธ์กฐ
MemberServiceTest class ์์ DB๋ฅผ ํด๋ฆฌ์ด ํด์ฃผ๊ธฐ ์ํด memberRepository
MemoryMemberRepository memberRepository = new MemoryMemberRepository();
@AfterEach
public void afterEach() {
memberRepository.clearStore();
MemberService ์ ์๋ memberRepository ์
public class MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
}
MemberServiceTest ์ ์๋ memberRepository ๋ ๋ค๋ฅธ ๊ฐ์ฒด
class MemberServiceTest {
MemberService memberService = new MemberService();
MemoryMemberRepository memberRepository = new MemoryMemberRepository();
MemoryMemberRepository ์์ static ์ผ๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค์ ์๊ด์์ด ํด๋์ค๋ ๋ฒจ์ ๋ถ์
public class MemoryMemberRepository implements MemberRepository{
private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L;
์ ์ (Static) ๋ฉค๋ฒ ์ ์ธ
ํ๋๋ ๋ฉ์๋๋ฅผ ์์ฑ ์ ์ธ์คํด์ค๋ก ์์ฑํ ๊ฒ์ธ์ง ์ ์ ์ผ๋ก ์์ฑํ ๊ฒ์ธ์ง์ ๋ํ ํ๋จ ๊ธฐ์ค์ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ๋๋ ์๋๋๋ก ๋ด๋ฆฌ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฅ ์์ฑํ๋ค๋ฉด ์๋์ผ๋ก ์ธ์คํด์ค๋ก ์์ฑ๋๋ฉฐ ์ ์ ์ผ๋ก ์์ฑํ๋ ค๋ฉด ํ๋์ ๋ฉ์๋ ์ ์ธ ์ static์ด๋ผ๋ ํค์๋ค๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๋ถ์ด๋ฉด ๋ฉ๋๋ค.
๋ค๋ฅธ ์ธ์คํด์ค์ฌ๋ Static ์ด๊ธฐ ๋๋ฌธ์ ์ง๊ธ ์ํฉ์์๋ ๋ฌธ์ ๋ ์๋ค
ํ์ง๋ง , ๊ฐ์๊ฒ์ผ๋ก ํ ์คํธ ํ๋๊ฒ์ด ์ณ๋ค
๊ฐ์ ์ธ์คํด์ค๋ฅผ ์ฐ๊ฒ ๋ฐ๊พธ๊ธฐ
์ธ๋ถ์์ ๋ฃ์ด์ฃผ๋๋ก ๋ณ๊ฒฝ (DI๋ Dependency Injection)
public class MemberService {
private final MemberRepository memberRepository;
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
ํ ์คํธ๋ฅผ ์คํํ๊ธฐ์ (BeforeEach) ์์ฑ
๊ฐ์ MemoryMemberRepository ๊ฐ ์ฌ์ฉ
class MemberServiceTest {
MemberService memberService;
MemoryMemberRepository memberRepository;
@BeforeEach
public void beforeEach() {
memberRepository = new MemoryMemberRepository();
memberService = new MemberService(memberRepository);
}
@BeforeEach : ํ ์คํธ ๋ฉ์๋ ์คํ ์ด์ ์ ์ํ
๊ฐ ํ ์คํธ ์คํ ์ ์ ํธ์ถ๋๋ค. ํ ์คํธ๊ฐ ์๋ก ์ํฅ์ด ์๋๋ก ํญ์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์์กด๊ด๊ณ๋ ์๋ก ๋งบ์ด์ค๋ค.
@BeforeEach
public void beforeEach() {
memberRepository = new MemoryMemberRepository();
memberService = new MemberService(memberRepository);
}
๋งค๋ฒ ์๋กญ๊ฒ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์ ๋๋ค.
@AfterEach
public void afterEach() {
memberRepository.clearStore();
}
MemoryMemberRepository ๋ด store๋ static ํ๋์ด๊ธฐ ๋๋ฌธ์
์ธ์คํด์ค๋ฅผ ์๋กญ๊ฒ ์์ฑํ๋ ๊ฒ๊ณผ ๋ณ๊ฐ๋ก
clearStore() ๋ฉ์๋๋ฅผ ํตํด ๋น์์ฃผ์ด์ผ ํฉ๋๋ค.
'Spring > Spring ์ ๋ฌธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ์ ๋ฌธ - (13) ํ์ ์น ๊ธฐ๋ฅ (0) | 2023.01.22 |
---|---|
์คํ๋ง ์ ๋ฌธ - (12) ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์์กด๊ด๊ณ ์ค์ (0) | 2023.01.21 |
์คํ๋ง ์ ๋ฌธ - (10) ํ์ ์๋น์ค ๊ฐ๋ฐ (0) | 2023.01.20 |
์คํ๋ง ์ ๋ฌธ - (9) ํ์ ๋ฆฌํฌ์งํ ๋ฆฌ ํ ์คํธ ์ผ์ด์ค ์์ฑ (1) | 2023.01.20 |
์คํ๋ง ์ ๋ฌธ - (8) ํ์ ๊ด๋ฆฌ ์์ (0) | 2023.01.15 |