OOP 적인 코드에 다가가기 위한 방법론 중 하나인 TDD에 대해 알아보고
Java에서 Test Code 작성에 도움을 주는 JUnit 프레임워크에 대해서도 알아보겠습니다.

테스트 코드를 작성한 뒤 구현을 한다면 좀 더 명확한 기능과 구조를 설계할 수 있게됩니다. 이유는 복잡한 기능을 가진 함수를 구현한뒤 그에대한 테스트 코드를 작성하게되면 테스트 방식이 복잡해지며 코드 수정이 되는 경우에는 테스트 코드를 재사용할 수 없기 때문에 자연스럽게 TDD의 목적인 코드의 재사용성을 보장하며 코드를 작성할 수 있게됩니다.
테스트 코드를 먼저 작성하기 때문에 최소의 설계 안을 만족시키고, 입출력 구조와 기능의 정의를 명확하게 하게되므로 설계의 구조적 문제를 빠르게 찾아낼 수 있습니다.
유닛 테스트 기반의 테스트 코드를 작성하기 때문에 에러가 발생 시 각각의 모듈 별로 테스트를 진행해서 어디서 문제가 발생했는지 빠르게 진단이 가능합니다.

assert 메서드로 각 테스트 케이스의 수행 결과를 확인할 수 있습니다.@Test : 테스트를 만드는 모듈 역할@DisplayName : 테스트 클래스 또는 테스트 메서드의 사용자 정의 표시 이름을 정의@ExtendWith : 사용자 정의 확장명을 등록하는데 사용@BeforeEach : 각 테스트 메서드 전에 실행됨을 나타냄@AfterEach : 각 테스트 메서드 후에 실행됨을 나타냄@BeforeAll : 현재 클래스의 모든 테스트 메서드 전에 실행됨을 나타냄@AfterAll : 현재 클래스의 모든 테스트 메서드 후에 실행됨을 나타냄@Disable : 테스트 클래스 또는 메서드를 비활성화assertArrayEquals(a, b) : 배열 A와 B가 일치함을 확인assertEquals(a, b) : 객체 A와 B가 같은 값을 가지는지 확인assertEquals(a, b, c) : 객체 A와 B가 값이 일치함을 확인( a: 예상값, b:결과값, c: 오차범위)assertSame(a, b) : 객체 A와 B가 같은 객체임을 확인assertTrue(a) : 조건 A가 참인지 확인assertNotNull(a) : 객체 A가 null이 아님을 확인