프로젝트 패키지 구성
Maven 프로젝트 JUnit 설정
디렉토리 /src/main/java/는 자바 코드를 보관하고, 단위 테스트의 소스는 디렉토리 /src/test/java/ 디렉토리에 보관한다.
테스트 하고자 하는 클래스가 포함된 패키지명과 동일하게 테스트 클래스를 포함하는 패키지도 동일하게 구성한다.
기본 사용방법
테스트 클래스는 반드시 public으로 선언해야 하며 클래스명은 관례에 따라 테스트클래명 + Test 끝나는 이름으로 사용된다.
@Test 어노테이션을 선언하여 testSum 메서드가 단위 테스트 메서드임을 선언하였다.
클래스명과 마찬가지로 테스트 메서드는 test + 테스트메서드명으로 선언한다. @Test 어노테이션을 선언한 메서드는 JUnit이 알아서 실행을 해준다.
JUnit 프레임워크에의 Assert 클래스의 정적 메서드인 assertEquals등을 이용하여 테스트 코드를 작성하고 JUnit Test를 실행한다
assertArrayEquals(a,b) : 배열 a와b가 일치함을 확인
assertEquals(a,b) : 객체 a와b의 값이 같은지 확인
assertSame(a,b) : 객체 a와b가 같은 객체임을 확인
assertTrue(a) : a가 참인지 확인
assertNotNull(a) : a객체가 null이 아님을 확인
Tip
테스트 설정 파일 (src/test/resources) 설정 파일 사용시 <import resource="classpath:/META-INF/spring/app-context.xml" />을 추가하여 사용하도록 한다.
spring 에서 junit 사용
@RunWith(SpringJUnit4ClassRunner.class) : spring-test안에 들어있는 클래스로 spring context에 설정된 Bean객체들을 JUnit 테스트에 사용할 때 선언
@ContextConfiguration : 설정 파일의 경로 지정하는 annotation이다. 설정하지 않으면 classpath의 "-context.xml"을 기본으로 찾는다. spring 설정 파일을 읽기위해 ClassPathXmlApplication 클래스를 사용하지 않아도 된다.
xml파일이 webapp 디렉토리 하위에 존재하는 것은 file로 시작하는 경로를 생성
classpath하위에 있는 설정파일은 classpath로 시작하는 경로를 생성
@Autowired : 해당 타입(ApplicationContext)과 일치하는 Bean을 검색해서 있다면 이곳이 주입(생성 후 할당)해 주는 것이다. 이를 타입에 의한 자동 와이어링이라고 한다. 구현된 class가 2개 이상일경우 @Qualifier("클래스명") 어노테이션을 사용.
Annotation
@Test : 테스트 메소드 지정
@Test(timeout=5000) : 테스트 메소드 수행시간 제한 (5000밀리 초를 넘기면 실패)
@Test(expected=RuntimeException.class) : 테스트 메소드 Exception 지정 (RuntimeException이 발생해야 성공)
@BeforeClass, @AfterClass : 테스트 클래스가 테스트되기 전,후 각각 실행되게 지정
@Before, @After : 테스트 클리스 안에 메소드들이 테스트되기 전, 후 각각 실행되게 지정