'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 공부하며 정리한 내용입니다. 오류 해결부분은 틀린 내용이 있을 수 있습니다.😂
public interface PostsRepository extends JpaRepository<Posts, Long> {
}
MyBatis 등에서는 Dao라고 불리는 DB Layer접근자, 인터페이스로 생성한다.
상속을 JpaRepository<Entity클래스, PK타입> 으로 받으면 기본 CRUD 메소드가 자동 생성된다.
❗ Entity클래스와 기본Entity Repository는 꼭 함께 위치해야한다
@RunWith(SpringRunner.class)
@SpringBootTest
public class PostRepositoryTest {
@Autowired
PostsRepository postsRepository;
@After
public void cleanup() {
postsRepository.deleteAll();
}
@Test
public void 게시글저장_불러오기() {
String title = "테스트 게시글";
String content = "테스트 본문";
postsRepository.save(Posts.builder()
.title(title)
.content(content)
.author("gourderased@gmail.com")
.build());
}
}
@After : Junit에서 단위 끝날 때마다 수행되는 메소드 지정
배포 전 전체 테스트를 하기 전 테스트간 데이터 침범을 막기 위해 사용
여러 테스트가 동시에 수행되면 H2에 데이터가 남아 다음 테스트가 실패할 수 있음
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
패키지 위치가 원본 소스와 맞지 않아서 발생했다. 원본 소스가 src/main/com에 위치하면 테스트 소스도 src/test/com에 위치해야한다.
참고 : https://nocount.tistory.com/208
테스트 코드 작성중 계속 오류가 생겨서 확인해보니 저자분께서 버전된 변경에 맞춰서 블로그에 수정 코드를 올려주신게 있었다. 프레임워크 버전에 따른 차이를 크게 체감했다.
블로그에 있는 버전으로 맞추고 진행해야 책 뒤 내용을 편하게 공부할 수 있을 것 같다.