[Basic] 테스팅 프레임워크 JUnit
2020. 6. 29. 20:28ㆍ개발/[Basic]
테스트 코드는 왜 필요한가?
우리가 DAO 를 테스트 한다고 생각해보자.
DAO를 만든 뒤 바로 테스트하지 않고, 서비스 계층, MVC 프레젠테이션 계층까지 포함한 모든 입출력 기능을 만든 후,
WAS를 배치한 뒤, 웹 화면을 띄워 폼을 열고, 값을 입력한 뒤 버튼을 눌러 등록해볼 것이다.
얼마나 귀찮은 짓인가? 또한 서버를 재가동 시키기 위해 지금은 작은 규모이지만 그것이 엄청나게 추가가 되어 큰 규모의 서버라고 생각해보자. 서버를 가동시킬 때도 1시간이 걸릴지도 모른다.
그것을 위해 우리는 작은 단위의 테스트를 꼭 진행해야 한다.
테스팅 프레임워크 JUnit
JUnit은 말 그대로 자바로 단위 테스트를 만들 때 유용하게 쓸 수 있다.
또한 프레임워크라 main() 메소드도 필요 없고 오브젝트를 만들어서 실행시키는 코드를 만들 필요가 없다.
public class UserDaoTest{
public static void main(String[] args) throws SQLException{
ApplicationContext context = new GenericXmlApplicationContext("spring/applicationContext.xml);
UserDao dao = context.getBean("userDao", UserDao.class);
User user = new User();
user.setId("user");
user.setName("박형서");
user.setPassword("hihi");
dao.add(user);
System.out.println("등록 성공");
User user2 = dao.get(user.getId());
if(!user.getName().equals(user2.getName())){
System.out.println("테스트 실패 (name)");
}
else if(!user.getPassword().equals(user2.getPassword())){
System.out.println("테스트 실패 (password)");
}
else{
System.out.println("조회 테스트 성공");
}
}
}
이러한 코드가 있는 것을 JUnit으로 바꾸어 보겠다.
public class UserDaoTest {
// JUnit에게 테스트용 메소드임을 알려준다.
@Test
public void addAndGet() throws SQLException, ClassNotFoundException {
ApplicationContext context = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
UserDao dao = context.getBean("userDao", UserDao.class);
User user = new User();
user.setId("user");
user.setName("박형서");
user.setPassword("hihi");
dao.add(user);
User user2 = dao.get(user.getId());
// if/else 문장을 Junit은 AssertThat이라는 스태틱 메소드를 이용해 변경한다.
// is() 는 일종의 equals() 로 비교해주는 기능을 가졌다.
assertThat(user2.getName(), is(user.getName()));
assertThat(user2.getPassword(),is(user.getPassword()));
}
}
'개발 > [Basic]' 카테고리의 다른 글
[Basic] 개발 Know 로드맵 (0) | 2020.07.18 |
---|---|
[Basic] OCP 개방 폐쇄 원칙 (0) | 2020.07.06 |
[Spring] 어플리케이션 컨텍스트에서 빈 생성 방법 (0) | 2020.06.29 |
[Basic] SRP 단일 책임 원칙 (0) | 2020.06.29 |
[Basic] 객체지향 설계 원칙 (SOLID) (0) | 2020.06.29 |