티스토리 뷰

개발 방식 연구/TDD

TDD [2]

kkoon9 2022. 1. 25. 23:08

스프링에서 제공하는 spring-boot-starter-test 디펜던시에서 JUnit과 같은 Test 라이브러리를 제공한다.

plugins {
	id 'org.springframework.boot' version '2.7.0-M1'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'com.kkoon9'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
	maven { url '<https://repo.spring.io/milestone>' }
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}

TDD 적용하기 예제

🐻  종이에 기능을 적어보고 어떤걸 테스트할지 생각해보는 것도 좋다.

 

Inventory 만들기

  • 가로, 세로, 높이
  • 냉장, 냉동, 상온(타입)
  • 총 저장 수량
  • 현재 수량

할일목록

  • Inventory의 크기를 알 수 있어야 한다.
  • Inventory의 타입을 알 수 있어야 한다.
  • 총 저장 수량을 알 수 있어야 한다.
package com.kkoon9.inventoryTDD;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class SimpleTest {

    public int fibonacci(int num) {
        if (num <= 1) {
            return num;
        }

        return fibonacci(num - 1) + fibonacci(num - 2);
    }

    @Test
    void testFibonacci_0() {
        int num = 0;
        int result = fibonacci(num);

        // 0 -> 0
        Assertions.assertEquals(0, result);
    }

    @Test
    void testFibonacci_1() {
        int num = 1;
        int result = fibonacci(num);

        // 1 -> 1
        Assertions.assertEquals(1, result);
    }

    @Test
    void testFibonacci_2() {
        int num = 2;
        int result = fibonacci(num);

        // 2 -> 1
        Assertions.assertEquals(1, result);
    }
    @Test
    void testFibonacci_3() {
        int num = 3;
        int result = fibonacci(num);

        // 3 -> 2
        Assertions.assertEquals(2, result);
    }

}

위 코드처럼 testFibonacci를 추가하면서 fibonacci 메서드를 계속해서 리팩터링해나가면 된다.

'개발 방식 연구 > TDD' 카테고리의 다른 글

TDD 관련 글 정리  (0) 2022.02.13
AssertJ  (0) 2022.01.29
AssertJ vs. JUnit  (0) 2022.01.26
TDD [3]  (0) 2022.01.25
TDD [1]  (0) 2022.01.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함