๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์„œ๋ฒ„/TDD

[TDD ๊ณต๋ถ€-java] 1) intellij์—์„œ JUnit ์„ค์ • ๋ฐ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

๐Ÿ”ด TDD ๋ž€?

๊ตฌํ˜„์ด ๋จผ์ €๊ฐ€ ์•„๋‹ˆ๋ผ ํ…Œ์ŠคํŠธ๊ฐ€ ๋จผ์ €๋‹ค! ํ…Œ์ŠคํŠธ๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ธฐ๋Šฅ์„ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•œ๋‹ค. 

  1. ์š”๊ตฌ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
  2. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ ์ƒ์„ฑ
  3. ๋ฆฌํŽ™ํ† ๋ง

๐ŸŸ  intellij์—์„œ JUnit ์„ค์ •

  1. ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ํ›„ [File] -> [Project Structure]๋ฅผ ์„ ํƒํ•ด Project Structure ์ฐฝ์„ ์—ฐ๋‹ค
  2. [Modules] -> [Dependencies] ํƒญ์„ ์„ ํƒํ•œ๋‹ค. 
  3. ์•„๋ž˜ [+]๋ฒ„ํŠผ -> [Library..] -> [From Maven] ์„ ํƒ
  4. ์ฐฝ์ด ๋œจ๋ฉด org.junit.jupiter:junit-jupiter ๊ฒ€์ƒ‰ ํ›„ ๋งž๋Š” ๋ฒ„์ „ ํด๋ฆญํ•˜๊ณ  OK

๐ŸŸก ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ testํด๋” ์ง€์ •ํ•˜๊ธฐ 

1. ํ”„๋กœ์ ํŠธ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด main ํด๋ž˜์Šค๋ฅผ ์ €์žฅํ•  main๊ณผ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•  test ์ƒ์„ฑ 

2. testํด๋”๋ฅผ ํ…Œ์ŠคํŠธ๋กœ ์ง€์ •

  • [File] -> [Project Structure] ๋กœ Project Structure ์ฐฝ์„ ์—ด๊ณ  ์™ผ์กด ์˜ต์…˜์ค‘ Modules๋ฅผ ์„ ํƒํ•œ๋‹ค.
  • ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด [Sources] -> [Tests]๋ฅผ ์„ ํƒํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋  ํด๋”์˜ ์œ„์น˜๋ฅผ ์„ ํƒํ•œ๋‹ค. 
  • ์šฐ์ธก Test Sources Floder ์•„๋ž˜ ์›ํ•˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋“ค์–ด๊ฐ”๋‹ค๋ฉด ์„ฑ๊ณต, OK -> OK -> OK

 

๐ŸŸข ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ 

ํ…Œ์ŠคํŠธํ•  ๊ธฐ๋Šฅ : Caculator ํด๋ž˜์Šค๋‚ด์˜ ๋ง์…ˆ ๊ณ„์‚ฐ์„ ํ•˜๋Š” plus๋ฉ”์†Œ๋“œ

1. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ž

  • Calculator์˜ plus๋ฉ”์†Œ๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•  ๊ฑฐ๊ธฐ ๋•Œ๋ฌธ์— Caculator ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ ๊ฐ’์ด ๊ธฐ๋Œ“๊ฐ’๊ณผ ๊ฐ™์€์ง€ assertEquals(๊ธฐ๋Œ“๊ฐ’, ์‹คํ–‰๊ฐ’)๋กœ ๊ฒ€์‚ฌํ•œ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด Caculator ํด๋ž˜์Šค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค. 
package java;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class CaculatorTest {
    @Test
    void plus() {
        int result = Calculator.plus(1, 2); // ์—๋Ÿฌ
        assertEquals(3, result);
    }
}

2. ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜์ž

  • ํ˜„์žฌ ์กด์žฌํ•˜์ง€ ์•Š์•„์„œ ์—๋Ÿฌ๊ฐ€ ๋œฌ Calculator๋ฅผ ์„ ํƒํ•œ ํ›„ [alt+enter] -> [create calss 'Caculator']๋ฅผ ๋ˆŒ๋Ÿฌ ์›ํ•˜๋Š” ์œ„์น˜์— Caculator๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 
  • ์‚ฌ์šฉํ•  plus ๋ฉ”์†Œ๋“œ๋„ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— plus ๋ฉ”์†Œ๋“œ๋„ ์ƒ์„ฑํ•œ๋‹ค. 
package main.java;

public class Caculator {
    public static int plus(int num1, int num2) {
        return num1 + num2;
    }
}

3. Test ์‹คํ–‰ 

๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด test๊ฐ€ ํ†ต๊ณผํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.

์‹คํŒจํ–ˆ์„ ๋•Œ 

์„ฑ๊ณตํ–ˆ์„ ๋•Œ

์ตœ์ข… ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 

๋ฐ˜์‘ํ˜•