ํ์๊ด๋ฆฌ ์์ TEST ์ฝ๋ ๋ชจ์์ ๋๋ค!
ํ ์คํธ ์ฝ๋๋ง๋ค ์ฃผ์์ฒ๋ฆฌ๋ก ์ค๋ช ์ ํ์ผ๋ ์ฐธ๊ณ ํด์ฃผ์ธ์!!
- ์ฌ์ฉ IDE : IntelliJ IDEA Ultimate
- ์ฌ์ฉ DB : MySQL
- ์ฌ์ฉ ์ธ์ด & SDK : Java & Amazon correto 11
- ์ ๋ฆฌ๋ณธ์ ๋๋ค ์ฐธ๊ณ ์ฉ์ผ๋ก๋ง ๋ด์ฃผ์ธ์ :D
์ด์ ๊ธ
ฮธ Spring Boot ์์ 1 (ํ์๊ด๋ฆฌ)
๐ Spring Boot ์์ 2 (ํ์๊ด๋ฆฌ)
๐ Spring Boot ์์ 3 (ํ์๊ด๋ฆฌ)
๐ Spring Boot ์์ 4 (ํ์๊ด๋ฆฌ)
- ํ ์คํธ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ์ด์
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ทธ๋ฅ ๋ฉ์๋๋ฅผ ์์ฑํ๊ณ ํ๋ก์ ํธ ์ ์ฒด๋ฅผ ์คํํ๋ฉด ๋๋๊ฑฐ๋ผ ์๊ฐํ ์ ์์๊ฒ๋๋ค ใ
ํ์ง๋ง ํ ์คํธ ์ฝ๋๋ฅผ ๋ง๋ค๋ฉด ํ๋ก์ ํธ ์ ์ฒด๋ฅผ ์คํ ํ ํ์ ์์ด
ํ ์คํธํ ๋ฉ์๋๋ง ํธ์ถํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ ๋น ๋ฅด๊ฒ ๋ฌธ์ ์ ์ ํ์ ํ ์ ์๊ธฐ๋ ํ๊ณ ,
์์์น ๋ชปํ ์ค๋ฅ๋ก ์ธํด ํ๋ก์ ํธ๊ฐ ๊ผฌ์ด๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค!!
๋ฐ๋ผ์ ๊ท์ฐฎ๋๋ผ๋ ํ๋ฒ์ฉ ๋์ ํด๋ณด๋๊ฒ๋ ์ข์๊ฑฐ ๊ฐ์ต๋๋ค :D
๊ทธ๋ผ ์๋ ํ ์คํธ ์ฝ๋๋ฅผ ๋ง๋๋ณด๋ฌ ๊ฐ์์ฃ !!
// assert๋ฌธ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐ๋ก import๋ฅผ ํด์ค์ผํ๋ ์ฝ๋ 2๊ฐ
import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*; // ์์ธ์ฒ๋ฆฌํ๋ assert
// ํ
์คํธ์ฉ ํด๋์ค๋ก ์ฌ์ฉํ๊ฒ ๋ค๋ ์ด๋
ธํ
์ด์
@SpringBootTest
public class MemberTest {
// ํ
์คํธ ๊ณต๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์์ฑ์์ฃผ์
๋์ ํด๋์ค์ฃผ์
์ ํด๋ ์๊ด ์์
@Autowired
private MemberService ms;
@Test // ํ
์คํธ ๋ฉ์๋ ์ ์ธ *๋ฐ๋์ ํ์
@DisplayName("ํ์ ๋ฐ์ดํฐ ์์ฑ") // ํ
์คํธ ๋ฉ์๋ ์ด๋ฆ ์ค์ *ํ์๋ ์๋
public void newMembers() {
// IntStream : for๋ฌธ๊ณผ ๋์ผํ java.util ์ ๊ณต ์ฝ๋
// IntStream : InputStream ์ ์ธ
// rangeClosed(x, y) : x๋ถํฐ y๊น์ง ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ์ฆ๊ฐ
// forEach(i -> {}) : ๋ฐ๋ณต๋๋ ๋์ ์คํ๋๋ ์ฝ๋ ์ ์ธ ๊ณต๊ฐ, i์ x๋ถํฐ y๊น์ง ๋ค์ด๊ฐ.
IntStream.rangeClosed(1,15).forEach(i -> {
ms.save(new MemberSaveDTO("email"+i, "pw"+1,"name"+i));
});
}
@Test
@Transactional // ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ฒ ๋ค๋ ์ด๋
ธํ
์ด์
@Rollback // @Transactional์ ํตํด ๋ฃ์ ๋ฐ์ดํฐ๋ฅผ ์๋ ๋ฐ์ดํฐ๋ก(์ญ์ ) ํ๋ ์ด๋
ธํ
์ด์
@DisplayName("๋ก๊ทธ์ธ ํ
์คํธ")
public void loginTest() {
// 1. ๋ก๊ทธ์ธ์ฉ ํ์ ๋ฐ์ดํฐ ์์ฑ ๋ฐ ์ ์ฅ
MemberSaveDTO memberSaveDTO = new MemberSaveDTO("๋ก๊ทธ์ธ์ฉ์ด๋ฉ์ผ", "๋ก๊ทธ์ธ์ฉ๋น๋ฐ๋ฒํธ", "๋ก๊ทธ์ธ์ฉ์ด๋ฆ");
ms.save(memberSaveDTO);
// 2. ๋ก๊ทธ์ธ์ ์๋ํ ๋ฐ์ดํฐ ์์ฑ ๋ฐ ๋ฉ์๋ ํธ์ถ
MemberLoginDTO memberLoginDTO = new MemberLoginDTO("๋ก๊ทธ์ธ์ฉ์ด๋ฉ์ผ", "๋ก๊ทธ์ธ์ฉ๋น๋ฐ๋ฒํธ");
boolean loginResult = ms.login(memberLoginDTO);
// 3. assertThat์ ํตํด ๋ก๊ทธ์ธ ์ฑ๊ณต์ฌ๋ถ ๋น๊ต
// assertThat : ์ฌ์ฉ์๊ฐ ์ง์ ํ ์กฐ๊ฑด์ ๋ถํฉํ๋ฉด ํ
์คํธ ํต๊ณผ.
assertThat(loginResult).isEqualTo(true);
}
@Test
@Transactional
@Rollback
@DisplayName("์กฐํ ํ
์คํธ")
public void memberListTest() {
// ์กฐํ ํ
์คํธ๋ฅผ ํ๊ธฐ ์ ํ
์ด๋ธ ๋๋์ ์งํํ์์ต๋๋ค.
// 1. for๋ฌธ์ ์ด์ฉํด ์กฐํ์ฉ ๋ฐ์ดํฐ 3๊ฐ ์์ฑ ๋ฐ ์ ์ฅ
for (int i=1; i<=3; i++) {
ms.save(new MemberSaveDTO("์กฐํ์ฉ์ด๋ฉ์ผ"+i, "์กฐํ์ฉ๋น๋ฐ๋ฒํธ"+i,"์กฐํ์ฉ์ด๋ฆ"+i));
}
// 2. ๋ชฉ๋ก ๋ฉ์๋ ํธ์ถ ๋ฐ List์ ์ ์ฅ
List<MemberDetailDTO> memberDetailDTOList = ms.findAll();
// 3. List์ size()๊ฐ 3์ธ์ง ๋น๊ต.
// size()๊ฐ 3์ด๋ฉด ํ
์คํธ ํต๊ณผ
// ๋ฐ์ดํฐ๋ฅผ 3๊ฐ๋ง ๋ฃ์์ผ๋ฏ๋ก DB์์ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ 3๊ฐ์ฌ์ผ ์ ์์
๋๋ค.
assertThat(ms.findAll().size()).isEqualTo(3);
}
@Test
@Transactional
@Rollback
@DisplayName("ํ์์ญ์ ํ
์คํธ")
public void memberDelete() {
// 1. ์ญ์ ์ฉ ํ์ ์์ฑ ๋ฐ ์ ์ฅ ํ ํ์๋ฒํธ ์ ์ฅ
Long memberId = ms.save(new MemberSaveDTO("์ญ์ ์ฉ์ด๋ฉ์ผ", "์ญ์ ์ฉ๋น๋ฐ๋ฒํธ", "์ญ์ ์ฉ์ด๋ฆ"));
System.out.println(ms.findById(memberId));
// ์ฌ๊ธฐ์๋ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ๋ฆฐํธ๊ฐ ์ ๋๋๊ฒ์ ๋ณผ ์ ์๋ค.
// 2. ์ญ์ ๋ฉ์๋ ํธ์ถ
ms.deleteById(memberId);
// System.out.println(ms.findById(memberId));
// ์ ์ถ๋ ฅ๋ฌธ์ ๋๋ฆฌ๋ฉด NoSuchElementException ์์ธ(์ค๋ฅ) ๋ฐ์
// ์ญ์ ํ ํ์์ id๋ก ์กฐํ๋ฅผ ์๋ํ์ ๋ null ์ด์ด์ผ ํ
์คํธ ํต๊ณผํ๊ฒ ๊ตฌํ
// NoSuchElementException ์์ธ๋ ๋ฌด์ํ๊ณ ํ
์คํธ๋ฅผ ์ํํ๊ฒ ํ๋ ์ฝ๋
// 3. ๋น๊ต
assertThrows(NoSuchElementException.class, () -> {
assertThat(ms.findById(memberId)).isNull();
// ์ญ์ ํ์ id ์กฐํ๊ฒฐ๊ณผ๊ฐ null์ด๋ฉด ํ
์คํธ ํต๊ณผ
});
// assertThrows(์์ธ.class, () -> { ์์ธ๋ฅผ ๋ฌด์ํ๊ณ ์คํ์ํฌ ์ฝ๋ })
}
@Test
@Transactional
@Rollback
@DisplayName("ํ์์์ ํ
์คํธ")
public void memberUpdate() {
Long memberId = ms.save(new MemberSaveDTO("์์ ์ฉ์ด๋ฉ์ผ", "์์ ์ฉ๋น๋ฐ๋ฒํธ", "์์ ์ ์ด๋ฆ"));
MemberDetailDTO memberDetailDTO = ms.findById(memberId), memberUpdateDetailDTO = ms.findById(memberId);
memberUpdateDetailDTO.setMemberName("์์ ํ์ด๋ฆ");
assertThat(memberDetailDTO.getMemberName()).isNotEqualTo(ms.findById(ms.update(memberUpdateDetailDTO)).getMemberName());
// ์ ์ฝ๋๋ฅผ ํ์ด์ ๋ณด๊ธฐ
// 1. ํ์ ์ถ๊ฐ ๋ฐ ํ์๋ฒํธ ์ ์ฅ
// Long memberId = ms.save(new MemberSaveDTO("์์ ์ฉ์ด๋ฉ์ผ", "์์ ์ฉ๋น๋ฐ๋ฒํธ", "์์ ์ ์ด๋ฆ"));
// 2. DetailDTO ๊ฐ์ ธ์ค๊ธฐ
// ์์ ์ DTO๋ฅผ ์ ์ฅ & ์์ ๋ฉ์๋๋ก ๋ณด๋ผ DTO ์์ฑ ๋ฐ ํ์ ์ด๋ฆ ๋ณ๊ฒฝ
// MemberDetailDTO memberDetailDTO = ms.findById(memberId);
// MemberDetailDTO memberUpdateDetailDTO = ms.findById(memberId);
// memberUpdateDetailDTO.setMemberName("์์ ํ์ด๋ฆ");
// 3. ์์ ๋ฉ์๋ ํธ์ถ
// ์์ ๋ฉ์๋์ ๋ณด๋ผ ๋งค๊ฐ๋ณ์๋ ์์ ๋ ๋ฐ์ดํฐ๊ฐ ์๋ memberUpdateDetailDTO๋ฅผ ๋ณด๋.
// memberId = ms.update(memberUpdateDetailDTO);
// ์์ ๋ฉ์๋ ํธ์ถ์ด ๋๋ ํ ์์ ๋ ๋ฐ์ดํฐ๋ฅผ memberUpdateDetailDTO์ ๋ด์.
// memberUpdateDetailDTO = ms.findById(memberId);
// 4. ์์ ํ ์์ ์ ์ ์ฅํ DTO์ DB์์ ์์ ์ด ๋๋ ํ ๊ฐ์ ์ ์ฅํ DTO์ ๊ฐ์ ๋น๊ต
// ๊ฐ์ด ๋ฌ๋ผ์ผ ์ ์์ ์ผ๋ก ์์ ์ด ์งํ์ด ๋ ๊ฒ ์ด๋ฏ๋ก .isNotEqualTo ๋ฅผ ์ฌ์ฉ.
// System.out.println("์์ ์ : "+memberDetailDTO.getMemberName());
// System.out.println("์์ ํ : "+memberUpdateDetailDTO.getMemberName());
// assertThat(memberDetailDTO.getMemberName()).isNotEqualTo(memberUpdateDetailDTO.getMemberName());
}
}