테스트
1) 단위 테스트 : 기능 단위 별 테스트 (Junit5)
2) 통합 테스트 : 모든 기능을 통합, 유기적으로 잘 동작하는지 테스트
junit-jupiter - dependency
maven-surefir-plugin - plugin
dependencies {
testImplementation platform('org.junit:junit-bom:5.10.2')
testImplementation 'org.junit.jupiter:junit-jupiter'
}
test {
useJUnitPlatform()
}
1) 테스트로 사용할 클래스를 만들고 @Test 애노테이션을 메서드를 붙이면 테스트 가능
2) @Test 애노테이션을 붙인 메서드는 private이면 안 된다.
테스트용 클래스 👉 명칭Test 관례
assertEquals(expected, actual) : expected(예상값), actual(실제값) 일치 여부
(equals and hashcode : 동등성)
assertNotEquals(unexpected, actual) : 예상했던 값과 다르면 통과
assertSame (Object expected, Object actual) : 예상했던 객체(expected)와 실
제객체(actual) 일치 하는지 체크(==)
assertNotSame(Object unexpected, Object actual)
assertTrue(boolean condition) : true가 나오면 통과
assertFalse(boolean condition) : false가 나오면 통과
assertNull(Object actual) : null이 나오면 통과
assertNotNull(Object actual) : null이 나오지 않으면 통과
fail() : 특정 상황에서 테스트 실패를 유도하는 경우
assertThrows(Class<T> expectedType, Executable executable)
expectedType - 발생 예상되는 예외 클래스 클래스
executable - 실행코드
assertDoesNotThrow(Executable executable) : 실행 코드 실행 시 예외가 발생 하지 않으면 통과
executable - 실행코드
assertAll(Executable... executable) :
@BeforeEach : 각각의 단위 테스트 메서드 실행 전에@AfterEach : 각각의 단위 테스트 메서드 실행 후에 @BeforeAll : 모든 단위 테스트 메서드 실행 전(한번만 실행), 정적 메서드로 정의@AfterAll : 모든 단위 테스트 메서드 실행 후(한번만 실행), 정적 메소드로 정의beforeAll
Before Each
태스트1번 진행
After Each
Before Each
테스트2번 진행
After Each
afterAll
@DisplayName : 테스트에 대한 설명
@Disabled : 테스트 배제
mvn package : 컴파일 👉 테스트 👉 배포(jar)
gradle build : 컴파일 👉 테스트 👉 배포(jaR)
TDD(Test Driven Development) : 테스트 주도 개발
테스트 하기 위한 시나리오 👉 필요한 기능을 개발 👉 테스트 실행 👉 통과❌ 👉 기능보완(리팩토링) 👉 통과 👉 기능완성
간단한 시나리오 👉 복잡한 시나리오
코드의 수정 보완