※ Mybatis mapper 가 설정되어 있으면 참조를 하기 때문에,
세팅된 mapper 가 불필요 하면 disable 방법을 찾아 보는 것도..
JUnit 테스트 하는데 계속 에러가 나서 결국 포기했었는데,
나중에 확인해 보니 mapper 중 하나가 문제를 일으켰던... ㅠ.
@Slf4j // lombok.extern.slf4j.*
@SpringBootTest // org.springframework.boot.test.context.*
public class ClassATests{
@Autowired // org.springframework.beans.factory.annotation.*
ClassARepository caRepository; // interface 이기 때문에 스프링에게 생성을 맡기는게 낫다
//@Test // Test 하지 않을 메소드는 이 부분만 주석처리 하면 실행되지 않는다
public void test1(){ // JUnit 이 작동하는지 체크하기 위해 세팅
log.info("\n>>> Hello, world!!"); // "\n>>>" 는 Console 창에서 눈에 쉽게 띄게 하려고 넣은 것
}
@Test // org.junit.jupiter.api.*
public void testRegister(){ // 등록
ClassA ca = new ClassA();
...
ClassA tmp = caRepository.save(ca); // DB 에 @Id 값이 동일한 레코드가 이미 존재하면 update, 아니면 insert
// 작동하는 방식은 #1 select 하고 #2 insert/update 하여, DB 를 총 2회 호출
}
@Test
public void testList(){ // 목록
Iterable <ClassA> caList = caRepository.findAll(); // java.lang.*
log.info(caList.toString()); // [ClassA(var1=val1, var2=val2, ...), ClassA(var1=val2, ...), ... ]
for(ClassA ca : caList){
log.info(">>>.ca : " +ca); // log.info(ca) 는 에러나고 log.info(ca.toString()) 해 주어야 함
}
}
@Test
public void testRead() {
Optional<ClassA> cao = caRepository.findById("..."); // java.util.*
log.info(cao.toString()); // Optional[ClassA(var1=val1, ...)]
if(cao.isPresent()) { // false 인 경우 toString() 하면 "Optional.empty"
// try ~ catch(Exception e) 인 경우, e.getMessage() 는 "No value present"
// JUnit 이니까 이런 메시지가 나오고, 실제는 Exception 내용이 나옴
// JUnit @Test 시에는 isPresnet() 과정이 불필요하지만
// 테스트 하는 이유가 본래 코드에 사용하기 위한 것이므로..
ClassA ca = cao.get(); // ClassA(var1=val1, ...)
log.info(ca.toString());
}
}
@Test
public void testModify() {
Optional<ClassA> cao = caRepository.findById("..."); // select, DB 1회 호출
log.info(">>>.cao : " +cao); // 수정 전
if(cao.isPresent()) {
ClassA ca = cao.get();
ca.setGroupName("...");
caRepository.save(ca); // update, DB 1회 호출. 결국 2회 호출. testRegister 처럼 update 해도 2회 호출
log.info(">>>.ca: " +ca); // 수정 후
}
}
@Test
public void testDelete() {
caRepository.deleteById("..."); // select 한 다음 delete. DB 를 2회 호출
}
}
'Server Oriented > Spring' 카테고리의 다른 글
스프링 파일 업로드 MultipartFile #2/2 (0) | 2023.02.03 |
---|---|
스프링 파일 업로드 MultipartFile #1/2 (0) | 2023.02.03 |
스프링 JPA, 평범한 게시판 구현 DB 테이블 1개 (2) | 2022.12.03 |
스프링, 세션과 쿠키 (0) | 2022.11.02 |
스프링 뷰, 타임리프 form 과 결과 (0) | 2022.10.14 |