강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

David Byun님의 프로필 이미지
David Byun

작성한 질문수

Spring Mybatis Test 관련 질의

작성

·

604

·

수정됨

0

안녕하세요

김영한 강사님 강의를 잘 듣고 있는 학생입니다.

항상 친절한 대답 해주셔서 감사합니다.

 

질문 1. MyBatis로 테스트 연습 해보고 있는데요. 테스트시 @MybatisTest를 이용하는 게 있고,

@Mock(Mokito)를 이용하는 방법이 있더라고요. 혹시 두개의 차이가 방법론의 차이인건지 아니면 Mybatis 연동 테스트시에는 @MybatisTest를 이용하고, 기타 서비스, 매퍼등 테스트시에는 @Mock를 이용하는 건지 궁금합니다.

 

질문 2. 블로그 참고하여 아래처럼 테스트해보았는데 NullPointer Exception이 떠서 해결방법이 어떤건지 궁금합니다(참고 블로그 : https://plz-exception.tistory.com/28)

OrderMapper

@Mapper
public interface OrderMapper {

    OrderVO getOrder(@Param("seq") Long seq);

    List<OrderVO> getOrders();
}

OrderVO

@Getter
public class OrderVO {

    private Long productseq;
    private String productName;

    public OrderVO() {
    }

    public OrderVO(Long productseq, String productName) {
        this.productseq = productseq;
        this.productName = productName;
    }

}

OrderMapper.xml

<mapper namespace="tdd.test.OrderMapper">

    <select id="getOrder" resultType="OrderVO">
        Select *
        from order_product
        where seq = #{seq}
    </select>


</mapper>

Test java

@MybatisTest
@Slf4j
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class OrderMybatisTestTest {
    @Autowired
    private OrderMapper orderMapper;
    @Test
    @DisplayName("Order Mapper Test")
    public void mybatis_Mapper_XML_테스트() throws Exception {

        //given
        Long seq = 1L;

        //when
        OrderVO order = orderMapper.getOrder(seq);

        //then
        assertThat(order.getProductseq()).isEqualTo(1L);

        //log
        log.info("테스트 결과 {} / {}", order.getProductseq(), order.getProductName());
    }
}

Error

스크린샷 2023-03-07 오전 5.56.15.png

답변 1

0

안녕하세요. David Byun님

@Mock(Mokito)는 테스트시에 가짜 객체를 만들어서 테스트를 편리하게 할 수 있도록 도와주는 객체입니다. 그러니까 실제 기능이 동작하는 것이 아니라 가짜 객체가 가짜 데이터를 반환해준다고 생각하시면 됩니다.

자세한 부분은 Mokito 사용법을 배워야 합니다. (Mokito로 검색해보시면 도움이 되실거에요)

@MybatisTest는 저도 사용해보지 않아서 정확히 잘 모르겠습니다.관련해서 아시는 분 있으면 답변 부탁드려요.

감사합니다.

David Byun님의 프로필 이미지
David Byun

작성한 질문수

질문하기