[spring] jUnit 단위테스트
📟 jUnit 단위테스트
Unit Test 단위테스트란?
- 각 코드가 의도한 대로 작동하는지 확인하는 절차
- 모든 함수와 매소드에 관해 테스트케이스를 작성하는 절차
jUnit이란?
- Java 자체 에서 단위테스트(Unit Test)를 제공해주는 프레임워크
- 보이지 않는 단위테스트를 끌어내서 정형화된 테스트를 제공해줌
- Assert 매소드로 테스트케이스의 수행결과 판별
- 각 테스트마다 새로운 인스턴스를 생성하여 독립적으로 테스트가 이루어지도록 해줌
jUnit을 사용한 DI 테스트 클래스
- 스프링 테스트 == Bean 테스트
- Junit 4부터 어노테이션 제공
- jUnit Annotation
@Test
- jUnit테스트 실행을 위해서는 꼭 @Test로 명시를 해줘야함
- 각 테스트가 영향을 주지않고 독립적으로 수행되기 위해 테스트 실행마다 객체를 따로 생성
@Ignore
- @Ignore선언 시, 테스트를 실행하지 않고 넘어감
@Before
- @Test 수행 전에 만드시 실행됨
- @Test 마다 공통적으로 사용되는 코드를 @Before에서 사용해도 됨
@After
- @Test 수행 후에 실행됨
@BeforeClass
- @Test보다 먼저, 한 번만 실행되는 경우 사용
@AfterClass
- @Test 이후에 한번만 실행되는 경우
테스트 결과를 확정하는 단정(Assert) 매소드
매소드 명 | 기능 |
---|---|
assertEquals(a, b) | 객체 A와 B가 일치함을 확인 |
assertArrayEquals(a, b) | 배열 A와 B가 일치함을 확인 |
assertSame(a, b) | 객체 A와 B가 같은 객체인지 확인 |
assertTrue(a) | 조건 A가 참인가를 확인 |
assertNotNull(a) | 객체 A가 null이 아님을 확인 |
> 다른 매소드 확인 http://junit.sourceforge.net/javadoc/org/junit/Assert.html
assertEquals | assertSame |
---|---|
두 객체의 값이 같은지 확인 | 두 객체의 레퍼런스가 동일한가를 확인 (==) |
SpringTest 지원하는 Annotation
jUnit으로 쉽게 테스트 할 수 있도록 도와주는 라이브러리
- @RunWith(SpringJUnit4ClassRunner.class)
- @RunWith
- 테스트 실행방법 확장시 사용
- 각 테스트별로 객체 생성시 싱글톤을 유지하도록 보장
- SpringJUnit4ClassRunner : jUnit 테스트를 진행하는중 ApplicationContext (Spring Bean Container)를 만들고 관리하는 작업 진행
- @ContextConfigurtion
- Bean 설정파일의 위치를 지정할 떄 사용
- @Autowired
- 변수, 매소드, 생성자에 모두 사용가능
- 해당 변수에 자동으로 Bean 매핑 ==> getBean()대신 사용
- 스프링 빈 설정 파일을 읽기 위해 굳이 GenericXmlApplilcationContext를 사용할 필요가 없음
[junit 테스트 코드]
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:config/spring_beans.xml")
public class AnnotatedHelloBeanTest {
@Autowired
HelloBean hello;
@Test
public void helloBeanProps() {
assertEquals("Hello 어노테이션", hello.sayHello());
}
@Test @Ignore
public void helloBean() {
assertEquals("Hello 어노테이션 생성자", hello.sayHello());
hello.print();
}
}