개발 기술 이야기/spring
[Spring 기본 - 4] jUnit와 Spring-Test
모짜모리
2021. 3. 22. 01:42
1. jUnit이란?
- Java에서 독립된 단위테스트(Unit Test)을 지원해 주는 프레임워크, 즉 모든 함수와 메소드에 대한 테스트 케이스(Test case)을 작성하는 절차
2. jUnit 특징
- 단정(assert) 메서드로 테스트 케이스의 수형결과를 판별한다.
- 테스트를 지원하는 어노테이션을 제공한다.
- 각 @Test 메서드가 호출할때 마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어진다.
3. jUnit에서 사용하는 어노테이션(Annotation)
- @Test
- @Test가 선언된 메소드는 테스트를 수행하는 메소드가 된다.
- JUnit는 각각의 테스트가 서로 영향을 주지않고 독립적으로 실행됨을 원칙으로 한다.
- @Ignore
- 해당 메소드는 실행되지 않는다.
- @Before
- @Test 메소드가 실행되기 전에 반드시 실행되어진다. 즉 @Test 메소드에서 공통으로 사용하는 코드를 @Before 메소드에 선언하여 사용한다.
- @After
- @Test 메소드가 실행된 후 실행된다.
- @BeforeClass
- @Test 메소드보다 먼저 한번만 수행되어야 할 경우에 사용
- @AfterClass
- @Test 메소드 보다 나중에 한번만 수행되어야 할 경우에 사용
4. 테스트 결과를 확인(Assert메서드)
- assertEquals(a,b) : 객체 A와 B가 일치함 확인
- assertArrayEquals(a,b) : 배열 A와 B가 일치함을 확인
- assertSame(a,b) : 객체 A와 B가 같은 객체임을 확인
- assertTrue(a) : 조건 A가 참인지 확인
- assertNotNull(a) : 객체 A가 null이 아님을 확인
5. Spring-Test에서 사용하는 어노테이션(Annotation)
- RunWith(SpringJUnit4ClassRunner.class)
- @RunWith는 jUnit 프레임워크의 테스트 실행 방법을 확장할때 사용한다.
- SpringJUnit4ClassRunner라는 클래스를 지정해주면 테스트를 진행하는중에 ApplicationContext를 만들고 관리하는 작업을 진행
- 테스트 별로 객체를 생성하더라도 싱클톤(sington)의 ApplicationContext를 보장
- ConetextConfiguration
- 스피링 빈(Bean) 설정 파일의 위치를 지정할때 사용
- ex) @ContextConfiguration(location="classpath:config/bean.xml"
- Autowired
- 스프링DI에서 사용하는 특별한 오노테이션
- 선언한 변수에 자동으로 빈을 매핑
- GenericXmlApplicationContext를 사용할 필요 없음
추가적으로
- SpringJUnit4ClassRunner.class or ContextConfiguration을 못찾는 경우
- pom.xml에 관련 Spring-Test dependency를 등록 확인
- 설정한 스프링 버젼과 동일 여부 확인
- <scope>가 있을 경우 삭제 혹은 주석 처리