ํ์ ๋๋ฉ์ธ ์คํ๊ณผ ํ ์คํธ
ํ์ ๋๋ฉ์ธ - ํ์ ๊ฐ์ main
package hello2.demo;
import hello2.demo.member.Grade;
import hello2.demo.member.Member;
import hello2.demo.member.MemberService;
import hello2.demo.member.MemberServiceImpl;
public class MemberApp {
public static void main(String[] args) {
MemberService memberService = new MemberServiceImpl();
Member member = new Member(1L, "memberA", Grade.VIP);
memberService.join(member);
Member findMember = memberService.findMember(1L);
System.out.println("new member = " + member.getName());
System.out.println("findMember = " + findMember.getName());
}
}
์์ํ ์๋ฐ ์ฝ๋๋ก๋ง ํ ์คํธ ์์ฑ
์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ผ๋ก ์ด๋ ๊ฒ ํ ์คํธํ๋ ๊ฒ์ ์ข์ ๋ฐฉ๋ฒ์ด ์๋๋ค.
(์ถ๋ ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์์์ ํ์ธํด์ผํจ)
--> JUnit ํ ์คํธ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์.
ํ์ ๋๋ฉ์ธ - ํ์ ๊ฐ์ ํ ์คํธ
ํ ์คํธ ์ฝ๋ ์์ฑ ์ ํ
@Test
void ๋ฉ์๋() {
//given ์ด๋ฐ๊ฒ ์ฃผ์ด์ก์ ๋,
//when ์ด๋ ๊ฒ ํ์ ๋,
//then ์ด๋ ๊ฒ ๋๋ค.
}
MemberServiceTest
package hello2.demo.member;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
public class MemberServiceTest {
MemberService memberService = new MemberServiceImpl();
@Test
void join() {
//given ์ด๋ฐ๊ฒ ์ฃผ์ด์ก์ ๋,
Member member = new Member(1L,"memberA",Grade.VIP);
//when ์ด๋ ๊ฒ ํ์ ๋,
memberService.join(member);
Member findMember = memberService.findMember(1L);
//then ์ด๋ ๊ฒ ๋๋ค.
Assertions.assertThat(member).isEqualTo(findMember);
}
}
Assertions
assertThat(actual).isEqualTo(expected);
isEqualTo : ๊ฐ์ฒด๊ฐ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋์ง ๋น๊ตํ๋ค.
ํ์ ๋๋ฉ์ธ ์ค๊ณ์ ๋ฌธ์ ์
์ด ์ฝ๋์ ์ค๊ณ์ ๋ฌธ์ ์ ์ ๋ฌด์์ผ๊น์?
๋ค๋ฅธ ์ ์ฅ์๋ก ๋ณ๊ฒฝํ ๋ OCP ์์น์ ์ ์ค์ํ ๊น์?
DIP๋ฅผ ์ ์งํค๊ณ ์์๊น์?
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
์์กด๊ด๊ณ๊ฐ ์ธํฐํ์ด์ค(MemberRepository) ๋ฟ๋ง ์๋๋ผ
๊ตฌํ(MemoryMemberRepository)๊น์ง ๋ชจ๋ ์์กดํ๋ ๋ฌธ์ ์ ์ด ์์ (DIP ์๋ฐ)
--> ์ด ๋ฌธ์ ์ ์ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ํด๊ฒฐํด ์ค ๊ฒ์ ( ์๋ง๋..? )