게시글
질문&답변
단위테스트, 통합 테스트, 시스템 테스트...
지식공유자는 아니지만 답변을 합니다.@SpringBootTest 가 있으면 통합 테스트일때만 쓰는것인지에 대한 질문을 했습니다.질문을 반대로 돌려보면 "해당 annotation 이 있으면 단위테스트가 아닌가?"라는 질문을 할 수 있겠습니다. 일단 단위테스트와 통합테스트의 정의부터 명확하게 할 필요가 있다고 생각합니다.테스트 진영에는 용어에 대하여 서로 명확하게 구분되어 있지는 않기에 다소 주관적인 답변을 합니다. 저는 통합테스트는 단위테스트가 아닌 테스트로 폭 넓게 정의를 합니다.그러면 단위테스트는 어떠한 테스트인지에 대한 정의를 필요합니다.클린코드에서는 FIRST 규칙에 대하여 이야기를 합니다.FastIsolatedRepeatableSelf-ValidatingTimely즉, 빠르고 독립적이며 반복할 수 있고, 자체 검증가능하고 적시에 사용 가능해야 합니다. 이런 특징에 반하여 @SpringBootTest 가 붙으면 일단 테스트 수행이 느려집니다.왜냐하면 스프링 컨테이너를 띄우기 위해 초기 가동을 하게 되기 때문입니다.따라서 이 annotation 이 있으면 단위테스트 보다는 통합테스트에 가깝다고 판별할 수 있습니다. 아울러 스프링 부트 레퍼런스 문서의 내용을 추가로 공유합니다.위에서 @SpringBootTest 가 붙으면 일단 테스트 수행이 느려진다고 했습니다.그래서 스프링부트를 만든 사람은 어떻게 하면 테스트 속도를 조금이라도 빠를까 고민을 하다가 테스트 슬라이스라는 것을 고안했습니다.@SpringBootTest 를 사용하면 사용하고 있는 여러 의존성을 모두 띄워야 하므로 테스팅 속도가 느릴 수 밖에 없는데 테스트가 필요한 부분만 쪼개서(slice) 테스트를 하면 조금이라도 빠르게 할 수 있기 때문입니다.자세한 내용은 아래 링크를 참고하세요.Auto-configured TestsTest Slices
- 0
- 2
- 246
질문&답변
SpringPhysicalNamingStrategy 바뀐건가요?
관련 스프링 부트 이슈에서 관련 링크를 추가하였습니다.Deprecate SpringPhysicalNamingStrategy in favor of Hibernate 5.5's CamelCaseToUnderscoresNamingStrategy : https://github.com/spring-projects/spring-boot/issues/27352commit: 4d30eb453f3d033784ca307257ae9436047bb54e커밋 diff를 보시면 AvailableSettings.PHYSICAL_NAMING_STRATEGY ("hibernate.physical_naming_strategy")가 SpringPhysicalNamingStrategy에서 CamelCaseToUnderscoresNamingStrategy 로 바뀌었습니다.(사진)질문하신 사항이 맞습니다.
- 0
- 3
- 1.2K
질문&답변
이런식으로 해도 객체 지향 프로그램인가요?
본문에 짜신 코드를 테스트하는 코드를 작성해보시면 본인의 코드가 잘 짰는지 / 개선의 여지가 있는지 판단을 하는데 도움이 될 것 같습니다. 여기서 테스트란 눈으로 결과를 확인하는 휴먼 테스트가 아닌 프로그램이 동작을 검증하는 코드의 형태인 것을 의미합니다.
- 0
- 2
- 1.8K
질문&답변
도메인 객체와 영속성 객체를 구분하게 되면
도메인 객체와 영속성 객체를 구분하게 되면 비즈니스 로직을 짤때 JPA에서 제공해주는 기능들을 사용하지 못할 것 같다고 하셨습니다. 비즈니스 로직의 구체적인 예(유스케이스)를 말씀해주시면 답변하기에 용이할 것 같습니다. 예에서 update를 들으셨지만 업데이트라는 것은 영속화를 하는 개념인 것이고 비즈니스 로직과는 거리가 있어보였기 때문입니다.
- 1
- 3
- 1.6K