목록프로젝트 (19)
barded
https://dzone.com/articles/7-popular-unit-test-naming 에 따르면 7가지를 추천한다.메서드명_테스트상태_기대결과이 전략에 대한 반대 의견은 메소드 이름이 코드 리팩토링의 일환으로 변경되면 테스트 이름도 변경되어야 하거나 나중에 이해하기 어려워질 수 있다는 점입니다. 다음은 몇 가지 예입니다:예시isAdult_AgeLessThan18_FalsewithdrawMoney_InvalidAccount_ExceptionThrownadmitStudent_MissingMandatoryFields_FailToAdmit메소드명_기대결과_테스트상태위의 방식에서 약간 변형된 방법으로, 일부 개발자들은 이 명명 방식을 추천합니다. 이 방식도 메소드 이름이 변경되면 나중에 이해하기 어려워..
통합 테스트 역할Contoller 계층 - Service 계층 - Repository 계층을 한번에 테스트를 진행하는 것이다.FromMeControllerIntegrationTest@ActiveProfiles("local")@Transactional@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)class FromMeControllerIntegrationTest { final String USERNAME = "USERNAME"; @Autowired WebTestClient webTestClient; @MockBean FromMeService fromMeService; static Stri..

Spring은 컨트롤러 엔드포인트를 테스트하기 위한 다양한 도구를 제공한다. MockMvc, WebTest Client 및 TestRestTemplate. 세 후보 모두 HTTP 엔드포인트 호출 및 응답 확인이라는 유사한 목표를 수행하지만, 이들 사이에는 여전히 자막 차이가 있고, 어느것을 선택할지 살펴보자.MockMvc용도: HTTP 서버를 시작하지 않고 Spring MVC 컨트롤러를 테스트할 때 이상적성능: 임베디드 서버가 필요하지 않아 빠르고 가볍습니다. 주로 단위 테스트에 적합.통합: Spring Security와 잘 연동되어 인증 및 권한 부여를 모킹할 수 있음.설정: @WebMvcTest와 함께 쉽게 설정할 수 있으며, 요청 빌딩 및 응답 검증을 위한 유창한 API를 제공WebTestClien..
Controller 계층의 단위 테스트 역할Controller 계층의 단위 테스트는 Service를 MockBean객체로 주입받은 후, 호출하여 예상한 결과가 맞는지 확인하면 된다.FromMeControllerTest@ActiveProfiles("local")@WebMvcTest(FromMeController.class)@MockBean(JpaMetamodelMappingContext.class)class FromMeControllerTest { final String USERNAME = "USERNAME"; @Autowired MockMvc mockMvc; @MockBean FromMeService fromMeService; @MockBean UserDetailSe..
Service 계층의 단위 테스트 역할Service 계층의 단위 테스트는 Repository를 Mock객체로 주입받은 후, Service를 호출하여 예상한 결과가 맞는지 확인하면 된다.FromMeServiceTest@ExtendWith(MockitoExtension.class)class FromMeServiceTest { @InjectMocks FromMeService fromMeService; @Mock PostRepository postRepository; @Mock CommentRepository commentRepository; @Mock UserRepository userRepository; @Mock OptionRepository optionRepository; @Mock VoteReposit..
Repository 계층의 단위 테스트 역할Repository 계층의 단위 테스트는 Mock객체 없이 데이터베이스와의 상호 작용이 올바르게 이루어지는지만 확인하면 된다.PostRepositoryTest@DataJpaTest@ActiveProfiles("test")@Import(QuerydslConfig.class)@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)class PostRepositoryTest { private final String USERNAME = "test"; @Autowired private UserRepository userRepository; @Autowired pri..
단위 테스트(Unit Test)란?단위 테스트(Unit Test)란 소프트웨어 개발에서 개별적인 작은 코드 조각(주로 함수나 메서드)을 독립적으로 테스트하는 것을 의미한다. 이는 특정 코드 조각이 예상대로 작동하는지 검증하는 데 목적을 둔다. 단위 테스트는 독립적으로 실행되며 자동화된 테스트 도구를 통해 수행된다. 또한, 단위 테스트는 작은 범위의 코드를 다루며 빠르게 실행된다. 주로 개발 초기 단계에서 버그를 조기에 발견하고 코드의 품질을 높이는 데 사용된다.통합 테스트(Integration Test)란?통합 테스트(Integration Test)란 소프트웨어 시스템의 여러 구성 요소가 통합되어 함께 작동하는지 검증하는 테스트이다. 단위 테스트와 달리, 통합 테스트는 시스템의 다양한 모듈 간의 상호작용..

@Formula를 사용한 쿼리 최적화 @Entity @Getter @Builder @NoArgsConstructor @AllArgsConstructor @SQLDelete(sql = "UPDATE mdm SET deleted = true WHERE mdm_id = ?") @SQLRestriction("deleted = false") public class Mdm extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "mdm_id") private Long id; private String title; private String content; private String opinion1; priv..

querydsl을 통한 다대다 구현 몇대몇 서비스는 몇대몇 게시글과 태그를 사이의 중간 테이블인 몇대몇_태그와 퀴즈와 태그 사이의 중간 테이블인 퀴즈_태그 테이블이 있다. 이때 몇대몇 게시글을 바탕으로 같은 태그를 가진 퀴즈들을 불려오려고 하는데, 생각보다 어려워서 정리해보고자 한다. Response에 담을 정보는 다음과 같다. id (퀴즈의 id), question(퀴즈 내용), correct(맞힌 사람 수), submit(제출한 사람 수), tags(연관 태그들) public record RelatedQuizDto( Long id, String question, Long correct, Long submit, List tags ) { } 비즈니스 로직은 크게 4단계로 나눌 수 있다. public Li..

CORS를 설정하고 요청을 보냈으나 Preflight에러가 떳었다. 이를 알아보자. Preflight란? Preflight는 단어 그 자체에서 알 수 있듯, 실제 통신을 하기 전에 미리 통신을 한 번 하는 것이다. 미리 통신을 보내서 Access-Control-Allow-Origin 설정은 되어있는지, 우리가 지금 보내려고 하는 메서드가 이 서버에서 사용 가능한지 확인할 수 있다. 위의 이미지 처럼 진행되는데, OPTIONS 요청으로 전송되고, Access-Control-Request-Method 로 앞으로 할 POST를 보내주고 있다. 서버에서는 해당 데이터를 받고 응답으로 Access-Control-Allow-Methods: POST, GET, OPTIONS 를 보내주고 있다. 이는 이 서버에서 처리..