# 토비의 스프링 [2장 - 2장 마무리] 스터디
주요 포커스
스프링이 제공하는 가장 중요한 가치 -> 객체지향, 테스트
스프링 핵심 -> IoC와 DI는 오브젝트의 설계와 생성, 관계, 사용에 관한 기술
테스트의 가치와 장점, 활용 전략, 스프링과의 관계
테스트란,
- 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지 확인
- 결함이 나올 경우 디버깅 작업 수행
- 최종 테스트가 성공하면 모든 결함이 제거됐다는 확신을 얻을 수 있다.
기본적인 테스트 코드
public class UserDaoTest {
public static void main(String[] args) throws SQLException {
ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml");
UserDao dao = context.getBean("userDao", UserDao.class);
User user = new User();
user.setId("user");
user.setName("강원준");
user.setPassword("test");
dao.add(user);
System.out.println(user.getId() + " 등록 성공");
User user2 = dao.get(user.getId());
System.out.println(user2.getName());
System.out.println(user2.getPassword());
System.out.println(user2.getId() + " 조회 성공");
}
}
특징
- 자바에서 손쉽게 실행 가능한 main() 메소드 활용
- 테스트 대상인 UserDao의 오브젝트를 가져와 메소드를 호출한다.
- 테스트에 사용할 입력 값(User)을 직접 코드에서 만들어 넣어준다.
- 테스트의 결과를 콘솔에 출력해준다.
- 각 단계의 작업이 에러 없이 끝나면 콘솔에 성공 메시지로 출력해준다.
Junit을 활용한 테스트로 테스트 Refactoring!!
- Test 클래스에서 메소드 단위로 단위 테스트할 수 있도록 @Test 어노테이션을 활용한다.
- UserDao와 같은 구성으로 UserDaoTest 클래스를 만들어 멤버 변수 및 메소드를 구현하여 테스트한다.
- Junit assert 메소드로 테스트케이스를 수행한다.
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
@SpringBootTest
public class UserDaoTest {
@Autowired
UserDao dao;
@Test
public void addAndGet() throws SQLException, ClassNotFoundException {
User user = new User("aa", "wonjune", "1234");
dao.add(user);
User user2 = dao.get(user.getId());
assertThat(user2.getName(), is(user.getName()));
assertThat(user2.getPassword(), is(user.getPassword()));
}
}
Junit 테스트 수행 순서
1. 테스트 클래스에서 @Test가 붙은 public이고 void형이며 파라미터가 없는 테스트 메소드를 모두 찾는다.
2. 테스트 클래스의 오브젝트를 하나 만든다.
3. @Before가 붙은 메소드가 있으면 실행한다.
4. @Test가 붙은 메소드를 하나 호출하고 테스트 결과를 저장한다.
5. @After가 붙은 메소드가 있으면 실행한다.
6. 나머지 테스트 메소드에 대해 2번-5번을 반복한다.
7. 모든 테스트의 결과를 종합해서 돌려준다.
Junit 테스트 수행시 주의점
각 테스트 메소드를 실행할 때마다 테스트 클래스의 오브젝트를 새로 만든다.
한번 만들어진 테스트 클래스의 오브젝트는 하나의 테스트 메소드를 사용하고 나면 버려진다.
픽스처
테스트를 수행하는 데 필요한 정보나 오브젝트
픽스처는 여러 테스트에 반복적으로 사용
@Before 메소드를 이용해 생성한다.
Author And Source
이 문제에 관하여(# 토비의 스프링 [2장 - 2장 마무리] 스터디), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@devsigner9920/토비의-스프링-2장-2장-마무리-스터디저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)