12강 JUnit
- 목차
- 내용
- JUnit 테스팅과 스프링 테스트
- 내용
- JUnit의 개요
- Java에서 독립된 단위테스트(Unit TesT)를 지원해주는 프레임워크입니다.
- 단위테스트란?
- 소스 코드의 특정 모듈이 의도된 대로 정확히 동작하는지 검증하는 절차입니다.
- 모든 함수와 메소드에 대한 테스트 케이스를 작성하는 절차를 뜻함.
- JUnit의 특징
- TDD의 창시자인 Kent Beck과 디자인 패턴 책의 저자인 Erich Gamma가 작성.
- 단정(assert) 메소드로 테스트 케이스의 수행 결과를 판별합니다
ex) assertEquals(예상 값, 실제 값) - jUnit4부터는 테스트를 지원하는 어노테이션을 지원합니다.
@Test / @Before / @After - 각 @Test 메소드가 호출될 때마다 새로운 인스턴스를 생성하여 독립적으로 테스트가 수행됩니다.
- jUnit 지원 어노테이션
- @Test
- @Test가 선언된 메소드는 테스트를 수행하는 메소드가 됩니다.
- JUnit은 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행됨을
원칙으로 하므로 @Test 마다 객체를 생성합니다.
- @Ignore
- @Ignore 가 선언된 메소드는 테스트를 실행하지 않습니다.
- @Before
- @Before가 선언된 메소드는 @Test 메소드가 실행되기 전에 반드시 실행됩니다.
- @Test 메소드에서 공통으로 사용하는 코드를 주로 @Before 메소드에 코딩합니다.
- @After
- @Test 메소드가 실행된 후에 실행되는 메소드입니다.
- 주로 자원의 정리, 반납하는 로직이 담겨 있습니다.
- @BeforeClass
- @BeforeClass 어노테이션은 @Test 메소드보다 가장 먼저 한번만 수행되어야 할 경우에 사용합니다.
- @AfterClass
- @Test가 모두 수행된 후에 마지막에 수행됩니다.
- @Test
- 테스트 결과를 확인하는 단정(assert) 메소드
- assertEquals(a, b);
- 객체 A와 B가 일치함을 확인합니다.
- assertArrayEquals(a, b);
- 배열 A와 B가 일치함을 확인합니다.
- assertSame(a, b);
- 객체 A와 B가 같은 객체임을 확인합니다.
- assertEquals 메소드는 두 객체의 값이 같은지 확인하고,
assertSame 메소드는 두 객체의 레퍼런스가 동일한가를 확인합니다. ( == 연산자 )
- assertTrue(a)... assertNotNull(a) ...
- assertEquals(a, b);
- Spring-Test에서 테스트를 지원하는 어노테이션
- @RunWith(SpringJUnit4ClassRunner.class)
- @RunWith는 jUnit 프레임워크의 테스트 실행방법을 확장할 때 사용하는 어노테이션으로써,
- SpringJUnit4ClassRunner라는 클래스를 지정해주면 jUnit이 테스트를 진행하는 중에
ApplicationContext를 만들고 관리하는 작업을 대신 진행해줍니다. - @RunWith 어노테이션은 각각의 테스트 별로 객체가 생성되더라도
싱글톤(singletone)의 ApplicationContext를 보장합니다.
- @ContextConfiguration
- 스프링 빈(Bean) 설정 파일의 위치를 지정할 때 사용되는 어노테이션입니다.
- @Autowired
- 스프링 DI 에서 사용되는 특별한 어노테이션입니다.
- 해당 변수에 자동으로 빈을 맵핑해줍니다.
- 스프링 빈 설정파일을 읽기 위해 굳이 GenericXmlApplicationContext를 사용할 필요가 없습니다.
- @RunWith(SpringJUnit4ClassRunner.class)
'Room 102. Back-end > Spring' 카테고리의 다른 글
[실전 개발자를 위한 Spring Framework ] 강의 - Context 분리와 전략 (0) | 2020.05.31 |
---|---|
[실전 개발자를 위한 Spring Framework ] 강의 - Data Access (0) | 2020.05.31 |
[실전 개발자를 위한 Spring Framework ] 강의 - Static (0) | 2020.05.31 |
[실전 개발자를 위한 Spring Framework ] 강의 - RESTful API (0) | 2020.05.31 |
[실전 개발자를 위한 Spring Framework ] 강의 - HTTP 파라미터 처리 (0) | 2020.05.30 |