본문 바로가기

Spring Framework/TDD4

단위 테스트 (Unit Test) 단위테스트와 통합테스트 단위 테스트 (Unit Test) 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트 모듈은 클래스가 될 수도, 메소드가 될 수도 있습니다. 다른 모듈과의 의존을 최대한 배제하여 온전히 순수한 모듈 그 자체로만 테스트하도록 해야합니다. 모든 모듈에 대한 각각의 Test Case를 작성하여 모듈이 의도된대로 동작하는지 테스트를 진행합니다. 통합 테스트 (Integration Test) 모듈을 통합하는 과정에서 모듈 간의 호환성을 확인하기 위해 수행되는 테스트 통합된 모듈들이 정상적으로 작동하는지를 테스트합니다. 단위테스트의 필요성 테스팅에 대한 시간과 비용을 절감할 수 있습니다. 통합 테스트의 경우, 여러 모듈 간의 상호작용을 테스트하기 때문에 모든 모듈을 로드하고 .. 2022. 6. 21.
Mockito Mockito란? 자바에서 단위테스트를 하기 위한 Mock Object를 creation(생성), verification(검증), stubbing 해주는 프레임워크 Spring Boot에는 자동으로 포함되어 있습니다. Mock Object 테스트를 수행할 객체가 의존하는 다른 객체들을 흉내내는 가짜 객체 가짜 객체를 만들어 사용함으로서 외부에 의존하지 않는 순수한 단위테스트가 가능해집니다. Mock Object Creation 🔥 Inline 방식과 Annotation 방식이 있습니다. mock() 파라미터로 들어온 객체의 Mock을 생성합니다. 생성된 Mock Object는 스터빙을 해서 사용해야합니다. MemberService memberService = Mockito.mock(MemberServic.. 2022. 6. 21.
JpaAuditing이 Test할 때 적용이 안되는 경우 오류 Spring Data Jpa가 생성해주는 메소드들이 내가 원하는 데이터를 정확히 가져오는지 테스트해보고자 코드를 작성해보았는데 오류가 발생했습니다. 작성 코드 @DataJpaTest class AccountRepositoryTest { @Autowired private AccountRepository accountRepository; @Autowired private AccountUserRepository accountUserRepository; private static AccountUseraccountUser; private static Accountaccount; @BeforeAll static void init() { accountUser= AccountUser.builder() .name(.. 2022. 6. 12.
Junit, Mockito 를 이용한 테스트 테스트시 이점 테스트를 짜면서 코드를 자연스럽게 리뷰하게 됩니다. 테스트 하기 어려운 경우, 코드가 잘못된 것을 빨리 알아챌 수 있습니다. 너무 다양한 일을 하고 역할이 많은 경우 테스트 하기 어렵습니다. 테스트가 잘 되어 있으면 리팩토링이 수월합니다. 코드의 품질이 좋아집니다. 현재 코드의 세부적인 정책들이 모두 테스트로 문서화 됩니다. 장기적으로 볼 때 더 빠르고 안정적인 개발이 가능해집니다. 테스트 작성 유의사항 클래스나 메소드가 SRP를 잘 지키고 너무 크지 않도록 합니다. 유닛 테스트의 경우 적절한 Mocking으로 격리성을 확보합니다. 테스트 커버리지를 높여서 테스트가 안되는 부분이 없도록 합니다. 테스트 코드도 코드라는 생각으로 개선합니다. 테스트 도구 JUnit xUnit이라는 유닛테스트 .. 2022. 6. 11.