TDD
![[TDD] JUnit5 기초](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flclhh%2FbtrXnlmLUno%2FNQnzrM2eMn4GzdYLr98yD1%2Fimg.jpg)
[TDD] JUnit5 기초
Junit5 모듈 구성 Junit5는 크게 세 개의 요소로 구성되어 있다. JUnit 플랫폼: 테스팅 프레임워크를 구동하기 위한 런처와 테스트 엔진을 위한 API를 제공한다. JUnit 주피터(Jupiter): JUnit5를 위한 테스트 API와 실행 엔진을 제공한다. JUnit 빈티지(Vintage): Junit 3과 4로 작성된 테스트를 Junit5 플랫폼에서 실행하기 위한 모듈을 제공한다. Junit5 는 테스트를 위한 API로 주피터 API를 제공한다. @Test 애노테이션과 테스트 메서드 JUnit 모듈을 설정했다면 JUnit을 이용해서 테스트 코드를 작성하고 실행할 수 있다. Junit의 Assertions 클래스는 assertEquals() 메서드와 같이 값을 검증하기 위한 목적의 다양한 정..
![[TDD] 기능 명세 ∙ 설계](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccSwYE%2FbtrWLVboenY%2FJ1tkfXOTVKrEAh95D3DdCk%2Fimg.jpg)
[TDD] 기능 명세 ∙ 설계
기능 명세 개발자는 코드를 작성하고 빌드하여 이를 사용자가 사용할 수 있게 배포한다. 설계는 기능 명세로부터 시작한다. 스토리보드를 포함한 다양한 형태의 요구사항 문서를 이용해서 기능 명세를 구체화한다. 기능 명세를 구체화하는 동안 입력과 결과를 도출하고 이렇게 도출한 기능 명세를 코드에 반영한다. 기능 명세의 입력과 결과를 코드에 반영하는 과정에서 기능의 이름, 파라미터, 리턴 타입 등이 결정된다. 설계 과정을 지원하는 TDD TDD에서 가장 중요한 것을 테스트 코드를 먼저 작성한다는 점이다. 리턴 타입과 파라미터 타입에 대해서 고민은 곧 설계 과정이다. 타입의 이름을 정의하고 타입이 제공할 기능을 결정하는 것은 기본 적인 설계 행위이다. TDD 자체가 설계는 아니지만, TDD를 하다 보면 테스트 코드..
![[TDD] 테스트 코드 작성 순서](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbARdFO%2FbtrWeYYVefT%2Fic0HJI2dYaTGP90eG3XHj0%2Fimg.jpg)
[TDD] 테스트 코드 작성 순서
테스트 코드 작성 순서 쉬운 경우에서 어려운 경우로 진행 예외적인 경우에서 정상인 경우로 진행 초반에 복잡한 테스트부터 시작하면 안되는 이유 초반부터 다양한 조합을 검사하는 복잡한 상황을 테스트로 추가하면 해당 테스트를 통과시키기 위해 한 번에 구현해야 할 코드가 많아진다. 구현하기 쉬운 테스트부터 시작하기 가장 구현하기 쉬운 경우부터 시작하면 빠르게 테스트를 통과시킬 수 있다. 보통 수 분에서 십여분 이내에 구현을 완료해서 테스트를 통과시킬 수 있을 만큼 쉬운 것을 선택한다. 예외상황을 먼저 테스트해야 하는 이유 예외상황을 전혀 고려하지 않은 코드에 예외 상황을 반영하려면 코드의 구조를 뒤집거나 코드 중간에 예외 상황을 처리하기 위해 조건문을 중복해서 추가하는 일이 벌어진다. 완급조절 정해진 값을 리턴..
![[TDD] 시작하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTyHZq%2FbtrVq1RsLBi%2FiUyKnIqO0kjw4eGcVcPOU1%2Fimg.jpg)
[TDD] 시작하기
TDD, 즉 테스트 주도 개발(Test-driven Development) 테스트부터 시작한다. 구현을 먼저하고 나중에 테스트하는 것이 아니라 먼저 테스트를 하고 그 다음에 구현한다. TDD 예: 암호 검사기 검사할 규칙 길이가 8글자 이상 0부터 9사이의 숫자를 포함 대문자 포함 등급 3개의 규칙을 충족하면 암호는 강함 2개의 규칙을 충족하면 암호는 보통 1개의 규칙을 충족하면 암호는 약함 assertEquals(기댓값,결과값); 테스트 코드 작성 첫 번째 테스트 - 모든 규칙을 충족하는 경우 public enum PasswordStrength { INVALID,NORMAL,STRONG } @Test void meetsAllCriteria_Then_Strong(){ PasswordStrengthMete..