class이름에서 shift + ctrl + t 쓰면, 해당 class의 test 파일 생성가능
editor > live template로 test코드 단축키 저장해놓으면 편리
given + when + then
@Transactional 해놓으면, Rollback 하는데, Rollback 안하고 싶으면(혹은 db에서 확인하고 싶으면) EntityManager 만들어서, em.flush() 해주면 확인할 수 있다!
혹은, @Rollback(false)
@Test(expected = 예외에러)를 적어주면, 해당 테스트 메소드에서 발생한 예외가 expected옆에 적어둔 예외와 같을 경우, 테스트가 성공하게 된다
테스트 환경에서 In-memory db를 사용할 경우에는, test폴더 하위에 resources를 만들면, test 돌릴 때, test/resources/application.properties로 실행되게 된다.
만약, h2 database를 사용하고 있는 경우, 아래와 같이 지정해주면, in-memory db를 jvm에 띄워서 사용할 수 있다.
spring.datasource.url = jdbc:h2:mem:test
그러나!!! springboot에는 기가막힌 것을 제공해주는데, application.properties에 아무것도 넣지 않게 되면, 자동으로 in-memory db를 사용한 테스트를 진행할 수 있도록 한다 😮
반복되는 객체 만들기 귀찮으면, ctrl+alt+m눌러서 private 메소드 만든 다음에 사용해도 좋다.
해당 test메소드 실행은 shift+ctrl+f10
shift + ctrl + t 하면, test메소드랑 아닌 메소드를 왔다갔다 편하게 할 수 있다.
[도메인 패턴]으로 작성할 경우, repository와 상관없이, entity에 대해 바로 테스트를 작성할 수 있어서 좋다.
db와 상관없이 단위테스트 가능!
ctrl+t 누르면, 추천해주는 refactoring 사용 가능