이 글은 최범균님의 테스트 주도 개발 시작하기라는 책을 참고하였습니다.
http://m.yes24.com/Goods/Detail/89145195
테스트 클래스 이름을 작성하는 특별한 규칙은 없지만 보통 다른 클래스와 구분을 쉽게하기 위해 'Test'를 접미사로 붙인다. 테스트를 실행할 메서드에는 @Test 애노테이션을 붙인다. 이때 @Test 애노테이션을 붙인 메서드는 private이면 안 된다.
메서드 | 설명 |
---|---|
assertEquals(expected, actual) | 실제 값이 기대하는 값과 같은지 검사한다. |
assertNotEquals(expected, actual) | 실제 값이 특정 값과 같지 않은지 검사한다. |
assertSame(Object expected, Object actual) | 두 객체가 동일한 객체인지 검사한다. |
assertNotSame(Object expected, Object actual) | 두 객체가 동일하지 않은 객체인지 검사한다. |
assertTrue(boolean condition) | 값이 true인지 검사한다. |
assertFalse(boolean condition) | 값이 false인지 검사한다. |
assertNull(Object actual) | 값이 null인지 검사한다. |
assertNotNull(Object actual) | 값이 null이 아닌지 검사한다. |
fail() | 테스트를 실패 처리한다. |
메서드 | 설명 |
---|---|
assertThrows(Class expectedType, Executable executable) | executable을 실행한 결과로 지정한 타입의 익셉션이 발생하는지 검사한다. |
assertDoesNotThrow(Executable executable) | executable을 실행한 결과로 익셉션이 발생하지 않는지 검사한다. |
JUnit은 각 테스트 메서드마다 다음 순서대로 코드를 실행한다.
1. 테스트 메서드를 포함한 객체 생성
2. (존재하면) @BeforeEach 애노테이션이 붙은 메서드 실행
3. @Test 애노테이션이 붙은 메서드 실행
4. (존재하면) @AfterEach 애노테이션이 붙은 메서드 실행
테스트 메서드 간 실행 순서 의존과 필드를 공유하지 않는다.
Junit은 테스트 메서드의 실행 순서를 지정하는 방법을 제공하고 있다. 하지만 각 테스트 메서드는 독립적으로 동작해야 한다. 테스트 메서드 간에 의존이 새기면 이는 테스트 코드의 유지보수를 어렵게 만든다. 테스트 코드 역시 코드이므로 유지보수가 중요하다. 테스트 코드를 작성할 때에는 이 점에 유념해야 한다.