JUnit?
Unit test
- 모든 함수와 메서드에 대한 테스트 케이스(Test case)를 작성하여 의도된대로 잘 작동하는지 검증하는 절차
- 작은 단위로 쪼개어 각 단위가 정확하게 동작하는지 검사하며 안정성 높임
- 매번 디버깅 이용해 출력하면서 시간 낭비할 필요 X, (=System.out 등)
JUnit
- java의 대표적인 Testing Framework
- 테스트를 작성하는 프로그래머, 확장 작성자 및 엔진 작성자는 물론 빌드 도구 및 IDE공급업체를 위한 포괄적인 참조 문서를 제공하는 것
- test결과는 test클래스로 개발자에게 테스트 방법 및 클래스의 history를 공유 가능
- JUnit 4부터 어노테이션으로 간결하게 지원
Test
method
@Test //메소드 위에 선언되면 이 메소드는 테스트 대상 메소드
@Test(timeout=5000) //메소드 수행시간 제한, 단위 밀리 초
@Test(expected=RuntimeException.class) //해당 exception이 발생해야 테스트 성공
@BeforeClass,@AfterClass //메소드 위에 선언시 해당 테스트 클래스에서 딱 한 번씩만 수행되도록 지정
//단위 테스트 메소드 전, 후로 딱 한번씩
//ex) AfterClass, DB연결 후 마지막에 드라이버를 반납하는 경우 등
@Before, @After //해당 테스트 클래스 안에 메소드들이 테스트 되기 전과 후에 각각 실행되게 지정
@DisplayName //테스트 클래스 또는 테스트 메서드의 사용자 정의 표시 이름을 정의
@ExtendWith //사용자 정의 확장명 등록
@BeforeEach //각 테스트 메서드 전에 실행됨을 나타냄
@AfterEach //각 테스트 메서드 후에 실행됨을 나타냄
@BeforeAll //현재 클래스의 모든 테스트 메서드 전에 실행됨 나타냄
@AfterAll //현재 클래스의 모든 테스트 메서드 후에 실행됨 나타냄
@Disable //테스트 클래스 또는 메서드를 비활성화
과정
- Before -> (test) -> after
- (test) = BeforeClass --> test --> AfterClass
- 최종적으로 Before --> BeforeClass --> test --> AfterClass --> After
Annotation
- 발판
- 소스코드에 대한 문서를 따로 만들기보다 소스코드와 문서를 하나의 파일로 관리하는 것이 낫다고 생각
- 소스코드의 주석 /**~*/에 소스코드에 대한 정보를 저장하고, 소스코드의 주석으로부터 HTML문서를 생성해내는 프로그램(javadoc.exe)을 만들어 사용
- 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것
- @ 태그 이용
- 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보를 제공할 수 있다는 장점
@Test //특정 메서드만 테스트하기를 원할 때 이용, 해당 메서드 앞에 붙여준다
//테스트 프로그램에 해당 메서드를 테스트해야한다고 알려주는 역할, 아무런 영향X
assertj
- 자바 라이브러리
- 에러 메세지 제공
- 테스트 코드의 가독성을 높여줌
- 여러 IDE 호한 가능
method
assertArrayEquals(a,b) //배열 a와 B 일치하는지 판단
assertEquals(a,b) //객체 a와 b 값이 같은지 판단
assertEquals(a,b,c) //오차 범위c를 내에서 객체 a와 b 값이 같은지 판단
assertSame(a,b) //객체 a와 b가 같은 객체인지 판단
assertTrue(a) //조건a가 참인지 확인
assertNotNull(a) //객체 a가 null이 아님을 확인