728x90
TDD
TDD란 테스트 주도 개발이라고 하며
반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위 테스트 케이스를 작성하고
이를 통과하는 코드를 추가하는 단계를 반복하여 구현합니다.
리팩토링(유지보수)의 용이성
개발 과정
- 실패한 테스트 작성
- 코드가 테스트를 통과할 수 있도록 작성
- 필요에 따라 코드 리팩토링
- 프로세스 반복
주제 :Fizz Buzz
// 3으로 나누어 지면 Fizz
// 5로 나누어 지면 -> Buzz
// 3과 5로 나누어 지면 FizzBuzz
// 둘다 안나눠지면 숫자 출력
1. 실패한 테스트 코드 작성
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class FizzBuzzTest
{
// 1. 실패한 테스트 코드 작성
@DisplayName("3으로 나누어지는 경우")
@Test
@Order(1)
void testForDivisibleByThree(){
String expected = "Fizz";
assertEquals(expected, FizzBuzz.compute(3), "Fizz 리턴");
}
}
public class FizzBuzz {
public static Object compute(int i) {
}
}
2. 코드가 테스트를 통과할 수 있도록 작성
FizzBuzz.java
public static Object compute(int i) {
if(i%3 == 0) return "Fizz";
return null;
}
프로세스 반복 >>
실패한 테스트 코드 작성
FizzBuzzTest.java
// 1. 실패한 테스트 코드 작성
@DisplayName("5으로 나누어지는 경우")
@Test
@Order(2)
void testForDivisibleByFive(){
String expected = "Buzz";
assertEquals(expected, FizzBuzz.compute(5), "Buzz 리턴");
}
코드가 테스트를 통과할 수 있도록 작성
if 문 추가
public class FizzBuzz {
public static Object compute(int i) {
if(i%3 == 0) return "Fizz";
if(i%5 == 0) return "Buzz";
return null;
}
}
실패한 테스트 코드 작성
// 1. 실패한 테스트 코드 작성
@DisplayName("3과 5로 나누어지는 경우")
@Test
@Order(3)
void testForDivisibleByThreeAndFive(){
String expected = "FizzBuzz";
assertEquals(expected, FizzBuzz.compute(15), "FizzBuzz 리턴");
}
// 1. 실패한 테스트 코드 작성
@DisplayName("나누어 떨어지지 않는 경우")
@Test
@Order(4)
void testForNotDivisibleByThreeOrFive(){
String expected = "1";
assertEquals(expected, FizzBuzz.compute(1), "1 리턴");
}
코드가 테스트를 통과할 수 있도록 작성
public class FizzBuzz {
public static Object compute(int i) {
if( (i%3 == 0) && (i%5==0)) return "FizzBuzz";
if(i%3 == 0) return "Fizz";
if(i%5 == 0) return "Buzz";
return Integer.toString(i);
}
}
'Back-end > 테스트' 카테고리의 다른 글
Spring Boot MVC 데이터베이스 통합 테스트 @Sql (0) | 2022.10.29 |
---|---|
Spring Boot Unit Testing - Mocking with Mockito - @MockBean, ReflectionTestUtils (0) | 2022.10.21 |
Spring Boot Unit Testing Support - 1 (0) | 2022.10.10 |
JUnit - 코드 커버리지 테스트 (0) | 2022.09.25 |
JUnit 테스트 - Assertions (0) | 2022.09.24 |
댓글