테스트할 때마다 Controller에 작업을 해야하는 불편함이 있지.
Controller 만드는 사람 따로 있어서 내가 이 Controller 만지지 못하는 상황이라면?
cf) 통합 테스트
* 단위 테스트할 수 있는 방법 *
테스트툴 : 제이유닛?
pom 파일을 가보자.
우리가 추가해주지도 않았는데 저절로 포함되어 있었던 test !
내가 테스트하고 싶은 파일을 우클릭 > new > JUnit Test Case
이러면 아래 사진처럼 src/test/java에 (패키지와 함께) 쏙! 들어간다.
테스트할 때는 이 페이지에서! 우클릭 > run
//
Q. JUnit이란?
- 이 실행을 도와주는 2가지를 제공.
1) 애가 test할 main 함수라는걸 알려주는 @Test를 알려줌
- 이게 있어야 실행해준다.
JUnit이 제공하는 @어노테이션.
2) 실패와 성공의 기준은 업무 다루는 사람에게 있을텐데...
-> 실패와 성공을 알려줌(?)
//
저 11번째줄 지워주면 성공했다고 나옴 ㅎㅎ
진짜 테스트를 해보자.
아까 Controller해서 해준 테스트
17번째줄에 선생님은 (list)임
근데 나는 아까 key 값을 줘야 실행되었으므로 여기서도 그냥 넣어주었다.
스프링이 일어나야! MyBatis도 깨우고 그러는데 ..
JUnit은 스프링이 아니라 @Autowired가 안 됨...
그럼 19번째줄의 noticeDao를 어디서 얻어온담....
-> JUnit이지만 스프링을 깨우도록 하자!
MyBatis가 JUnit에 플러그인 설치(?)를 할 수 있도록 도와줌
-> 도구를 받자.
http://mybatis.org/spring-boot-starter/mybatis-spring-boot-test-autoconfigure/index.html
or pom파일 열어서
dependecies > add 클릭 > mybatis .. 인데 검색한게 더 빨랐으므로 그냥 아래에 손수 넣어주었다 ㅎㅎ
-> 이걸 추가해줬으므로 @MybatisTest 사용 가능!
근데 (선생님거는) 오류남
MyBatis 사용하려고 하는데
- 테스트 아니라 정말 개발! 할 때 사용하는 db를 정말 사용하겠냐고 에러 메시지가 묻는 중
-> 우리는 그냥 있는걸 쓰겠다. 하면 추가로 @AutoConfigureTestDatabase 넣어준다.
replace 옵션은 None으로 '대체해주지 않겠다'를 (우선) 선택함
그런데 오류남.
지호님 말처럼 18번째줄을 @SpringBootTest로 바꿔줬더니 되었다.
@MyBatisTest라고 했었는데,
-> 이건 딱 자기가 관여된! 녀석만 담아주는거라...
이건 딱 Dao만 테스트 할 때만 가능 (우리가 Dao 파일을 지금 테스트하고 있기 때문임. 공식 아님!)
-> '전~체'를 테스트하려면 @SpringBootTest
콘솔창에 나오는거 확인
30, 31번째줄처럼 테스트해볼 수 있겠지 ~
// 남겨진 내용이 중요하기에 test는 이렇게 소개 정도까지만 하겠다.
- 김영한 인강에서 다시 보고 해봐야겠당.
78일 - AOP, Proxy, @Transactional, ACID 中 1) 원자성 테스트 (0) | 2021.06.10 |
---|---|
78일 - Service 구현 (프로젝트 관련) (0) | 2021.06.10 |
78일 - 다수의 db 가져오기 <foreach> (0) | 2021.06.10 |
77일 - update 할 때의 <set>, 래퍼클래스로의 변환, 파일만 주는 테이블에 id 주기 intro (1) | 2021.06.09 |
77일 - 테이블명을 맞춰주는 <resultMap>, 페이징(Limit * Offset *), 동적 쿼리, <where> (0) | 2021.06.09 |