728x90
반응형
jUnit의 특징
- TDD의 창시자인 Kent Beck과 디자인 패턴 책의 저자인 Erich Gamma가 작성했다.
- 단정(assert) 메서드로 테스트 케이스의 수행 결과를 판별한다.
ex) assertEquals(예상 값, 실제 값) - jUnit4부터는 테스트를 지원하는 어노테이션을 제공한다.
ex) @Test @Before @After - 각 @Test 메서드가 호출할 때 마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어지도록 한다.
jUnit 어노테이션
@Test
- @Test가 선언된 메서드는 테스트를 수행하는 메소드가 된다.
- jUnit은 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행됨을 원칙으로 하므로 @Test 마다 객체를 생성한다.
@Ignore
- @Ignore가 선언된 메서드는 테스트를 실행하지 않게 한다.
@Before
- @Before가 선언된 메서드는 @Test 메소드가 실행되기 전에 반드시 실행되어 진다.
- @Test 메소드에서 공통으로 사용하는 코드를 @Before 메소드에 선언하여 사용하면 된다.
@After
- @After가 선언된 메서드는 @Test 메소드가 실행된 후 실행된다.
@BeforeClass
- @BeforeClass 어노테이션은 @Test 메소드 보다 먼저 한번만 수행되어야 할 경우에 사용하면 된다.
- 클래스가 로딩되는 시점에서 딱 한번만 실행
@AfterClass
- @AfterClass 어노테이션은 @Test 메소드 보다 나중에 한번만 수행되어야 할 경우에 사용하면 된다.
- 클래스가 해당되는 객체가 지시되기 전에 딱 한번만 실행
assert 메서드
assertEquals(a, b); | 객체 A와 B가 일치함을 확인한다. |
assertArrayEquals(a, b); | 배열 A와 B가 일치함을 확인한다. |
assertSame(a, b); |
객체 A와 B가 같은 객체임을 확인한다. |
assertTrue(a, b); | 조건 A가 참인가를 확인한다. |
assertNotNull(a); | 객체 A가 null이 아님을 확인한다. |
assert 메서드 참고
https://junit.org/junit5/docs/current/api/org/junit/jupiter/api/Assertions.html
Assertions (JUnit 5.4.2 API)
Assert that all supplied executables do not throw exceptions. If any supplied Executable throws an exception (i.e., a Throwable or any subclass thereof), all remaining executables will still be executed, and all exceptions will be aggregated and reported i
junit.org
Spring-Test 어노테이션
@RunWith(SpringJUni4ClassRunner.class)
- @RunWith는 jUnit 프레임워크의 테스트 실행방법을 확장할 때 사용하는 어노테이션이다.
- SpringJUnit4ClassRunner라는 클래스를 지정해주면 jUnit이 테스트를 진행하는 중에 ApplicationContext를 만들고 관리하는 작업을 진행해 준다.
- @RunWith 어노테이션은 각각의 테스트 별로 객체가 생성되더라도 싱글톤(SingleTon)의 ApplicationContext를 보장한다.
@ContextConfiguration
- 스프링 빈(Bean) 설정 파일의 위치를 지정할 때 사용되는 어노테이션이다.
@Autowired
- 스프링DI에서 사용되는 특별한 어노테이션이다.
- 해당 변수에 자동으로 빈(Bean)을 매핑 해준다.
- 스프링 빈(Bean) 설정 파일을 읽기 위해 굳이 GenericXMLApplicationContext를 사용할 필요가 없다.
(new 사용해서 할 필요가 없다는 말인듯...)
반응형
'개발자의 공부방 > 스프링' 카테고리의 다른 글
logback 사용 시 log4jdbc 로그 찍기 (0) | 2019.06.07 |
---|---|
스프링 학습 중 (0) | 2019.06.04 |
스프링 기초] DI (Dependency Injection)란? (0) | 2019.05.21 |
스프링 기초] 컨테이너와 IoC (Inversion of Control, 제어의 역전) 란? (1) | 2019.05.21 |
스프링 기초] 스프링 프레임워크 Request Life Cycle (1) | 2019.05.21 |