반응형
TDD 방식으로 개발 예제를 작성해 보았다.
로직
* - 점수가 70점 이상이면 PASS, 아니면 FAIL을 출력한다.
TDD 방식 개발이 아닐 때
import java.util.Random;
public class Example {
public static void main(String[] args) {
Random random = new Random();
for(int i = 0; i < 5; i++) {
// 1 ~ 100점 사이의 점수를 임의로 5개 넣었다.
int score = random.nextInt(100);
if(score >= 70) {
System.out.println("PASS");
} else {
System.out.println("FAIL");
}
}
}
}
TDD 방식으로 개발 할 때
- 실패 케이스를 작성한다.
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class ExampleTest {
@Test
@DisplayName("학생 성적 테스트 - 과락")
void fail_score_test () {
JunitExampleTest je = new JunitExampleTest();
String valueExpected = "FAIL";
int failScore = 69;
String result = je.test(failScore);
assertEquals(valueExpected, result);
}
@Test
@DisplayName("학생 성적 테스트 - 통과")
void pass_score_test () {
JunitExampleTest je = new JunitExampleTest();
String valueExpected = "PASS";
int failScore = 79;
String result = je.test(failScore);
assertEquals(valueExpected, result);
}
}
// - 통과하지 못할 것이다.
// JunitExampleTest와 test메소드가 구현되어 있지 않다.
- 성공 케이스를 작성한다.
- JunitExampleTest 클래스와 test 메소드를 구현한다.
- 테스트가 성공하는지 확인한다.
public class JunitExampleTest {
public String test(int score) {
if(score >= 70) {
return "PASS";
} else {
return "FAIL";
}
}
}
프러덕션에 코드를 적용한다
public class Example { public static void main(String[] args) { JunitExampleTest je = new JunitExampleTest(); Random random = new Random(); for(int i = 0; i < 5; i++) { int score = random.nextInt(100); System.out.println(je.test(score)); } } }
코드를 리팩토링 하면서 작업의 완성도를 높인다.
- 예를들어 점수를 0 ~ 100으로 한정하였고 만약 100점 이상이 나올 경우의 처리도 필요하다.
'프로그래밍 > 스프링 자바' 카테고리의 다른 글
[JPA] N+1 문제 개념, 원인, 해결방안 (0) | 2021.07.13 |
---|---|
[스프링 시큐리티] 스프링 시큐리티 + Jwt 흐름 알기 (0) | 2021.07.12 |
[Java] JVM, 자바 메모리, GC (0) | 2021.07.03 |
[Spring] 스프링 개념 정리 (0) | 2021.06.30 |
객체 지향 프로그래밍이 정리 (OOP 정리) (0) | 2021.06.28 |