복붙노트

[SPRING] Spring jdbcTemplate 유닛 테스트

SPRING

Spring jdbcTemplate 유닛 테스트

저는 Spring을 처음 접했고 JUnit과 Mockito를 약간만 경험했습니다.

나는 단위 테스트가 필요한 다음과 같은 방법을 가지고있다.

public static String getUserNames(final String userName {
  List<String> results = new LinkedList<String>();
   results =  service.getJdbcTemplate().query("SELECT USERNAME FROM USERNAMES WHERE NAME = ?", new RowMapper<String>() {
      @Override
      public String mapRow(ResultSet rs, int rowNum) throws SQLException {
          return new String(rs.getString("USERNAME");
      }
   }

   return results.get(0);      
   },userName)

누구든지 내가 JUnit과 Mockito를 사용하여 이것을 달성 할 수있는 방법에 대한 제안을 가지고 있습니까?

대단히 감사드립니다!

해결법

  1. ==============================

    1.당신이 순수 단위 테스트를하고 싶다면 그 라인에 대해

    당신이 순수 단위 테스트를하고 싶다면 그 라인에 대해

    service.getJdbcTemplate().query("....");
    

    서비스를 조롱 한 다음 service.getJdbcTemplate () 메소드를 사용하여 모의 JdbcTemplate 객체를 반환 한 다음 조롱 된 JdbcTemplate의 쿼리 메소드를 조롱하여 필요한 List를 반환해야한다. 이 같은:

    @Mock
    Service service;
    
    @Mock
    JdbcTemplate jdbcTemplate;
    
    
    @Test
    public void testGetUserNames() {
    
        List<String> userNames = new ArrayList<String>();
        userNames.add("bob");
    
        when(service.getJdbcTemplate()).thenReturn(jdbcTemplate);
        when(jdbcTemplate.query(anyString(), anyObject()).thenReturn(userNames);
    
        String retVal = Class.getUserNames("test");
        assertEquals("bob", retVal);
    }
    

    위의 경우에는 어떤 종류의 Spring 지원도 필요하지 않습니다. 실제로 데이터가 DB에서 제대로 추출되었는지 테스트하려는 통합 테스트를 수행했다면 Spring Test Runner를 사용하는 것이 좋습니다.

  2. ==============================

    2.이를 위해서는 Spring Test를 사용해야합니다. 설명서를 살펴보십시오.

    이를 위해서는 Spring Test를 사용해야합니다. 설명서를 살펴보십시오.

    http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/testing.html

    @RunWith를 사용하여 테스트를 만들고 Spring 컨텍스트를 @ContextConfiguration과 함께 사용해야합니다.

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:spring-config.xml")
    public class SpringAppTests {
        @Autowired
        private HelloService helloService;
    
        @Test
        public void testSayHello() {
            Assert.assertEquals("Hello world!", helloService.sayHello());
        }
    }
    

    여기에 문서에서 약간의 설명이 있습니다.

    @Runwith

    @ContextConfiguration

    도움을 받기를 희망한다.

  3. from https://stackoverflow.com/questions/24123683/spring-jdbctemplate-unit-testing by cc-by-sa and MIT license