@ExtendWith(SpringExtension.class) // spring에서 테스트 하기 위한 설정
@ContextConfiguration(classes = UserDaoFactory.class)
class UserDaoTest {
// 싱글톤을 위해 Autowired 사용
@Autowired // 새로운 객체를 사용하지 않고 이전에 사용했던 객체의 주소를 그대로 사용한다는 설정
// new 객체 생성을 한번만 사용함(고정값)
ApplicationContext context; // Spring ApplicationContext를 사용하기 위해서는
// @ExtendWith 과 @ContextConfiguration를 추가해줘야 한다.
(1) 테스트 클래스에서 @Test가 붙은 public이며 void형이고 파라미터가 없는 테스트 메서드를 모두 찾는다.
(2) 테스트 클래스의 오브젝트를 하나 만든다.
(3) @BeforeEach가 붙은 메서드가 있으면 실행한다.
(4) @Test가 붙은 메서드를 하나 호출하고 테스트 결과를 저장해둔다.
(5) @After가 붙은 메서드가 있으면 실행한다.
(6) 나머지 테스트 메서드에 대해 2~5번 반복한다.
(7) 모든 테스트의 결과를 종합하여 돌려준다.
@ExtendWith(SpringExtension.class) // spring에서 테스트 하기 위한 설정
@ContextConfiguration(classes = UserDaoFactory.class)
class UserDaoTest {
// 싱글톤을 위해 Autowired 사용
@Autowired // 새로운 객체를 사용하지 않고 이전에 사용했던 객체의 주소를 그대로 사용한다는 설정
// new 객체 생성을 한번만 사용함(고정값)
ApplicationContext context; // Spring ApplicationContext를 사용하기 위해서는
// @ExtendWith 과 @ContextConfiguration를 추가해줘야 한다.
@Test
void addAndSelect() throws ClassNotFoundException, SQLException {
User user1 = new User("1","홍길동","1234");
User user2 = new User("2","이순신","4567");
User user3 = new User("3","세종","7896");
UserDao userDao = context.getBean("awsUserDao", UserDao.class); // bean 파일에서 awsUserDao 메서드를 가져온다
// UserDao userDao1 = context.getBean("awsUserDao",UserDao.class); userDao와 같은 객체를 사용함
userDao.deleteAll();
Assertions.assertThat(0).isEqualTo(userDao.getCount());
String id = "3";
userDao.add(user1);
Assertions.assertThat(1).isEqualTo(userDao.getCount());
User user = userDao.select(id);
Assertions.assertThat("Spring").isEqualTo(user.getName());
// assertEquals("Spring",user.getName());
}
}
※ 참고 자료
https://reiphiel.tistory.com/entry/junit5-features2
https://cheershennah.tistory.com/220