1. ์ฝ๋๋ถ์
package hello.hellospring.domain;
import hello.hellospring.repository.MemoryMemberRepository;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;
class MemberServiceTest {
// test ํ memberService์ ๊ฐ์ฒด๋ฅผ ์์ฑ
MemberService memberService;
// Repository์ ๋์ผํ ๊ฐ์ด ๋์ ๋ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฏ๋ก, clearstoreํ๊ธฐ ์ํด ์ ์ฅ์ ๊ฐ์ฒด๋ ์์ฑ
// ์ ์ธ์ ๋ฐ ์งค๋ผ์ beforeEach๋ฌธ์ ๋ฃ์ด๋จ๋๋ฐ, ์ด๋ ๋ฐ์ ๋ฐ๋ก ์ค๋ช
ํ๊ฒ ์.
MemoryMemberRepository memberRepository;
@BeforeEach // test ์์ ์ ์
public void beforeEach() {
memberRepository = new MemoryMemberRepository(); // ์ ์ฅ์ ์์ฑ
memberService = new MemberService(memberRepository);// ์ ์ฅ์๋ฅผ ๋ฉค๋ฒ ๊ฐ์ฒด์ ๋ฃ์
}
@AfterEach //test ํ ์ ์ฅ์์ value๋ค์ clear
public void afterEach(){
memberRepository.clearStore();
}
@Test
void ํ์๊ฐ์
() {
//give - ์ด๋ค ์ํฉ์ด ์ฃผ์ด์ก์ ๋,
Member member = new Member();
member.setName("์ ์๋ฏผ");
//when - ์ด๊ฒ ์คํํ๊ฒ ๋๋ฉด,
Long saveId = memberService.join(member); //join ๋งค์๋๋ member์ id๋ฅผ ์กฐํํด์ ๋ฐํํจ
//then - ๊ฒฐ๊ณผ๊ฐ ์ด๊ฒ ๋์์ผํจ.
Member findMember = memberService.findOne(saveId).get(); // get() == ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
//findOne() == findbyId() -> ์กฐํํ Id๋ฅผ ๋ฐํํจ. get()์ ๊ฐ์ฒด ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋๋ด.
assertThat(member.getName()).isEqualTo(findMember.getName());
//assertThat์ 2๊ฐ์ ๊ฐ์ ๋น๊ต. ํด๋น member ๊ฐ์ฒด์ ์ด๋ฆ๊ณผ ์ฐพ๊ณ ์ ํ๋ ๋ฉค๋ฒ์ ์ด๋ฆ์ด ๊ฐ์์ง ๋น๊ต.
}
@Test
public void ์ค๋ณต_ํ์_์์ธ() {
//given
Member member1 = new Member();
member1.setName("์ ์๋ฏผ");
Member member2 = new Member();
member2.setName("์ ์๋ฏผ");
//when
memberService.join(member1);
//์ค๋ณต๋ ์ด๋ฆ์ด ๋ค์ด์์ ์์ธ์ฒ๋ฆฌํ๋ ๋ฌธ์ฅ
IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));
assertThat(e.getMessage()).isEqualTo("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค.");
/* try {
memberService.join(member2);
fail();
} catch (IllegalStateException e) {
assertThat(e.getMessage()).isEqualTo("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค.");
}*/
//then
}
@Test
void findMember() {
}
@Test
void findOne() {
}
}
2. ์ฝ๋ ๋ถ์ ์ฌํ
(1) ํด๋์ค ๊ฐ์ ๊ด๊ณ ์ฌ์ ์
// ์๋ ์ฝ๋
//----memberservice class ๋ด์์----
private final MemberRepository memberRepository = new MemberRepository();
//----MemberSerivceTest Class ๋ด์์----
MemberService memberService = new MemberService();
MemoryMemberRepository memberRepository = new MemberRepository();
์๋ ์ฝ๋๋ MemberService Class ๋ด์ ์ ์ฅ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , Test Class ๋ด์์๋ MemberService ๊ฐ์ฒด์ ์ ์ฅ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฐ ์์ฑํ์ฌ test ํ๋ค.
<๋ฌธ์ ์ >
์ง๊ธ ํด๋น ์์ ์์ ์ ์ฅ์ ๊ฐ์ฒด์ ํ ์ด๋ธ ๋ง๋๋ ๊ฑธ ๋ด๋นํ๋ Map ์๋ฃํ์ด static์ด๋ผ ์ ์ฅ์๋ฅผ importํ class ์ด๋์๋ ํ ์ด๋ธ์ ์ผ๊ด๋๊ฒ ํ๋๋ผ์ ๊ด์ฐฎ์ง๋ง, ๋ฉค๋ฒ ์๋น์ค ๊ฐ์ฒด๋ ์ ์ฅ์ ๊ฐ์ฒด๊ฐ ์๋ก ๋ค๋ฅธ ์ธ์คํด์ค์ฌ์ ๋ด์ฉ๋ฌผ์ด ๋ฌ๋ผ์ง๋ ์ค๋ฅ๊ฐ ์๊ธธ ์ ์๋ค.
๋ง์ ํ๋์ ๊ฒฝ์ฐ๋ ๋ฐฉ์ง ํ๋ ๊ฒ์ด ์ข๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ๋ฐ๊พผ๋ค.
์ด๋ MemberService ํด๋์ค์ ์ ์ฅ์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํด๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ์๋ก ๋ฐ๋ก ๋ ธ๋ 2๊ฐ์ ์ธ์คํด์ค๊ฐ ์๋๋ผ ํ๋์ ์ธ์คํด์ค๋ก ํฉ์น๋ค.
//----MemberService Class ๋ด์์----
private final MemberRepository memberRepository;
public MemberService(MemberRepository memberRepository)
{
this.memberRepository =memberRepository;
}
//----MemberServiceTest Class ๋ด์์----
MemberService memberService;
MemoryMemberRepository memberRepository;
@BeforeEach
public void beforeEach() {
memberRepository = new MemoryMemberRepository();
memberService = new MemberService(memberRepository);
}
(2)assertThrows(์์ธ ํด๋์ค์ Class type, ๋ฆฐ๋ค์ ์คํ๊ตฌ๋ฌธ () -> {})
๋๋ฒ์งธ ์ธ์์ธ ๋ฆฐ๋ค์ ๊ตฌ๋ฌธ์ ์คํํ์ฌ ์ฒซ๋ฒ์งธ ์ธ์์ ๊ฐ์ ํ์ ์ ์์ธ๊ฐ ๋์ค๋์ง ๊ฒ์ฌ
(3)assertThat(a).isEqualto(b)
= a๊ฐ b๋ ๊ฐ์๊ฒ ์ฐธ์ธ์ง ํ์ธํ๋ ๊ตฌ๋ฌธ
assertThat -> java๋ฅผ testํ๋ build์ธ jUnit์์ ์ฐ๋ ๋ ๊ฐ์ฒด์ ๋์ผ์ฑ, ํ๋ ์กฐ์ฌํ์ฌ ํด๋น์กฐ๊ฑด์ด ์ฐธ์ธ์ง ํ์ธํ๋ ๊ตฌ๋ฌธ
(4)e.getMessage()
: ์๋ฌ์ ์์ธ์ ์ถ๋ ฅํ๋ ๋ฌธ์ฅ
(5) try-catch ๋ฌธ
try{
//์์ธ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ฌธ์ฅ
}catch (Exception1 e1)
{ //Exception1์ด ๋ฐ์ํ์ ๊ฒฝ์ฐ, ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฌธ์ฅ - ๋ณดํต ์ด๊ณณ์ ์์ธ๋ฉ์์ง ์ถ๋ ฅํ๊ณ ๋ก๊ทธ๋ก ๋จ๊ธด๋ค.}