JUnit
JUnit 은 자바 테스팅 프레임워크다. 사실상 표준이라고 할만큼 널리 사용되고 있다.
JUnit 장점
JUnit 을 사용하는 이유는 개발자가 설계하고 만든 코드가 원래 의도한대로 잘 동작하는지를 개발자 스스로 테스트하기 위해서이다.
테스팅 프레임워크를 사용하지 않을 때에는 System.out.println 메소드를 호출해서 일일이 확인하여 처리했었다.
하지만 이러한 테스트 방식은 화면, db 연결, 여러가지 설정까지 모두 해준뒤에야 테스트가 가능하다.
JUnit 은 이러한 점을 개선하여 작은 단위테스트까지 가능하도록 만들어졌다.
예를들어 테스팅 프레임워크를 쓰지않고 Dao 클래스를 테스트를 진행한다면 화면 폼을 만들고 DB 도 연동해 sysout 으로 확인해봐야하지만
JUnit을 이용하면 화면개발과 DB 연동 없이도 Dao 클래스만 독립적으로 테스트가 가능하다.
사용 방법
테스트 메소드를 만들기 위해서는 2가지 설정이 필요하다.
(테스트 클래스 생성하면 자동으로 설정되어있음)
- 테스트메소드를 public으로 선언
- 메소드 위에 @Test 어노테이션 설정
JUnit 메소드
JUnit 은 if~else 대신 assertThat 이라는 스태틱 메소드를 제공한다.
assertThat은 첫번째 파라미터의 값을 뒤에 나오는 매처라고 불리는 조건으로 비교해서 일치하면 다음으로 넘어가고 아니면 테스트가 실패하도록 만든다.
is() 는 매처의 일종으로 equals() 로 비교해주는 기능을 한다.
예)
assertThat(user2.getPassword(), is(user.getPassword());
JUnit 은 예외가 실패하거나 테스트가 실패하면 자동으로 알려주기때문에 System.out.println("테스트 성공") 같이 메시지를 직접 작성할 필요가 없다.
테스트가 성공할 경우, OK 메세지와 테스트실행시간, 몇개의 테스트 메소드가 실행됐는지 실패할 경우, 호출스택에는 실패원인, 테스트코드에서 검증에 실패한 위치 등을 알려준다.
- JPA 를 이용해 UserRepository.java 생성
- UserRepository 클래스를 테스트하는 UserRepositoryTest 클래스 생성
1. JPA 를 이용해 UserRepository.java 생성
2. UserRepository 클래스를 테스트하는 UserRepositoryTest 클래스 생성
3. UserRepository 클래스에 대한 테스트 코드 작성
@Test 어노테이션과 함께 @Before, @After 어노테이션도 사용할 수 있는데 이름대로 @Before 는 @Test 메소드 직전에, @After 는 직후에 실행됨.
참고 : 토비의 스프링 3.1