인프런 커뮤니티 질문&답변
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

답변 1
0
안녕하세요. David Byun님
@Mock(Mokito)는 테스트시에 가짜 객체를 만들어서 테스트를 편리하게 할 수 있도록 도와주는 객체입니다. 그러니까 실제 기능이 동작하는 것이 아니라 가짜 객체가 가짜 데이터를 반환해준다고 생각하시면 됩니다.
자세한 부분은 Mokito 사용법을 배워야 합니다. (Mokito로 검색해보시면 도움이 되실거에요)
@MybatisTest는 저도 사용해보지 않아서 정확히 잘 모르겠습니다.관련해서 아시는 분 있으면 답변 부탁드려요.
감사합니다.




