Lombok 생성자 주입 시 인터페이스 주입하기

인터페이스 생성자 주입 스프링에서는 의존성을 주입받는 다양한 기능이 있습니다. 그중 가장 많이들 사용하시는 롬복을 활용한 생성자 주입은 다음과 같습니다. @RequiredArgsConstructor @Service public class MyService { private final MyRepository myRepository; } // 빌드 시 lombok의 @RequiredArgsConstructor에 의해 추가되는 코드 public MyService(MyRepository myRepository) { this.myRepository = myRepository; } 하지만 주입받아야 하는게 인터페이스1라면 어떻게 의존성을 주입받을 수 있을까요? 인터페이스의 구현체가 1개라면 문제가 없지만, 여러개 있다면 문제가 됩니다. 스프링이 어떤 Bean을 주입해야 할지 선택하지 못하기 때문입니다.(결정장애) ...

2024. 3. 29. · 2 분 · 346 단어 · Leaf

Jnuit 테스트에서 객체 필드명 비교하기

상황 기존 코드를 리팩토링하는 과정에서 엔티티 객체에 있던 @Data를 @Getter로 변경중이었습니다. 테스트를 위해 임시로 @Data를 붙여놓고 사용중이었습니다. @Getter // 기존 : @Data @Builder @AllArgsConstructor public class LaneInfo { private TeamPosition teamPosition; private boolean isBottomLane; private int myTeamId; private int myLaneNumber; private int oppositeLaneNumber; private int myBottomDuoNumber; private int oppositeBottomDuoNumber; //...(생략) } 기존에 잘 동작하던 아래 테스트에서 오류가 발생했습니다. //생략 // matchIndicator가 가진 laneInfo와 given에서 주어진 laneInfo 비교 assertThat(matchIndicators.get(0) .getMetadata() .getLaneInfo()) .isEqualTo(laneInfo); 원인 분석 오류 로그는 다음과 같았습니다. Expected :com.ssafy.matchup_statistics.indicator.entity.match.LaneInfo@1150d471 Actual :com.ssafy.matchup_statistics.indicator.entity.match.LaneInfo@6393bf8b 해당 테스트코드는 기존에는 잘 동작했고, 각 필드가 하나라도 달라지면 실패하던 테스트코드였기에 원인이 궁금했습니다. ...

2024. 3. 23. · 2 분 · 335 단어 · Leaf

Springboot Junit 단위테스트에서 로그 레벨 조정하기

로그레벨 변경하기 단위테스트에서 간단하게 로그 레벨을 변경할 수 있습니다. 통합테스트는 @SpringBootTest를 사용하면 /src/test/resources/application.properties에 있는 설정정보를 자동으로 불러오지만, 단위테스트에서는 해당 어노테이션이 너무 무겁기 때문에 사용할 수 없습니다. 바로 코드로 알아보겠습니다. // 단위테스트가 필요한 클래스 내부에 해당 코드를 추가하면 완료입니다. import org.slf4j.LoggerFactory; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; @BeforeAll public void setLogLevel() { final Logger logger = (Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); logger.setLevel(Level.ALL); } 간단히 코드를 설명드리자면, 단위테스트 시작 전 LoggerFactory로 새로운 loogger를 생성하고 레벨을 변경한 후 테스트를 수행하기 위한 코드입니다. ...

2024. 3. 20. · 1 분 · 106 단어 · Leaf