ํ ์คํธ ๊ณผ์ ์ด ํ์ํ ์ด์
- ๋ฒ๊ทธ ๋ฐ์ ์, ์ฌ์ฉ์์๊ฒ ์๊ฐ๋ณด๋ค ํฐ ๋ถํธ์ด๋ ํ์ฌ์ ํฐ ์ ์ํฅ์ ์ค ์ ์์
- ๊ฐ๋ฐ์ ๊ต์ฅํ ์ด๋ ค์
- ๊ฐ๋ฐ ์ฝ๋๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ ์ ์ต๋ํ ๋ฒ๊ทธ๋ฅผ ๋ง์ด ์ฐพ์๋ด๋ ๊ฒ ์ข์!
ํ ์คํธ ๋ฐฉ์
1. ๋ธ๋๋ฐ์ค ํ ์คํ
์ํํธ์จ์ด ๋ด๋ถ ๊ตฌ์กฐ๋ ๋์์๋ฆฌ๋ฅผ ๋ชจ๋ฅด๋ ๋ธ๋๋ฐ์ค์ ๊ฐ์ ์ํ์์, ์ฆ ์น ์๋น์ค์ ์ฌ์ฉ์ ์ ์ฅ์์ ๋์์ ๊ฒ์ฌํ๋ ๋ฐฉ๋ฒ
- ์ฅ์
- ๋๊ตฌ๋ ํ ์คํธ ๊ฐ๋ฅํจ(๊ฐ๋ฐ์, ๋์์ด๋, ๋ฒ ํ ํ ์คํฐ ๋ฑ)
- ๋จ์
- ๊ธฐ๋ฅ์ด ์ฆ๊ฐ๋ ์๋ก ํ ์คํธ ๋ฒ์๊ฐ ์ฆ๊ฐํจ
- ํ ์คํธํ๋ ์ฌ๋์ ๋ฐ๋ผ ํ ์คํธ ํ๋ฆฌํฐ๊ฐ ๋ค๋ฅผ ์ ์์
2. ๊ฐ๋ฐ์ ํ ์คํธ
๊ฐ๋ฐ์๊ฐ ์ง์ ๋ณธ์ธ์ด ์์ฑํ ์ฝ๋๋ฅผ ๊ฒ์ฆํ๊ธฐ ์ํด ํ ์คํธ ์ฝ๋ ์์ฑ
- ์ฅ์
- ๋น ๋ฅด๊ณ ์ ํํ ํ ์คํธ๊ฐ ๊ฐ๋ฅํจ(์์ ๋์ vs ์ค์ ๋์)
- ํ ์คํธ ์๋ํ ๊ฐ๋ฅ(๋ฐฐํฌ ์ ์ฐจ ์ ํ ์คํธ ์ฝ๋๊ฐ ์ํ๋์ด ๋์ ๊ฒ์ฆ)
- ๋ฆฌํฉํ ๋ง์ด๋ ๊ธฐ๋ฅ ์ถ๊ฐ๋ฅผ ํ ๋ ๋์ฑ ํธ๋ฆฌํจ
- ๋จ์
- ๊ฐ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ
- ํ ์คํธ ์ฝ๋๋ฅผ ์ ์ง๋ณด์ํ๋ ๋น์ฉ์ด ๋ฐ์ํจ
์คํ๋ง์์ ํ ์คํธ ์ฝ๋ ์์ฑ, Junit
์คํ๋ง์์๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ ํ๊ฒฝ์ธ Junit ์ ๊ณตํจ
Junit์ Java ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ฉ ๋จ์ ํ ์คํธ ํ๋ ์์ํฌ

- build.gradle ํ์ผ์ ์ด๋ฏธ test๋ผ๋ dependencies๊ฐ ์ถ๊ฐ๋์ด ์์
ํ ์คํธ ์ฝ๋ ์์ฑํด๋ณด๊ธฐ
1. ๊ณ์ฐ๊ธฐ ํด๋์ค ์์ฑ
package com.sparta.springprepare.calculator;
public class Calculator {
public Double operate(double num1, String op, double num2) {
switch (op) {
case "*":
return num1 * num2;
case "/":
if (num2 != 0) {
return num1 / num2;
} else {
return null;
}
case "+":
return num1 + num2;
case "-":
return num1 - num2;
default:
throw new IllegalArgumentException("์๋ชป๋ ์ฐ์ฐ์
๋๋ค.");
}
}
}
2. ํ ์คํธ ํ์ผ ์์ฑ




3. ํ ์คํธ ์ฝ๋ ์์ฑ
Java๋ Main ๋ฉ์๋๋ก ์์ํด์ Main ๋ฉ์๋๋ก ๋๋์ง๋ง, ํ ์คํธ ์ฝ๋๋ Main์ด ์์!
Junit์ ํ ์คํธ ์คํ ํ๊ฒฝ์ ๋ฐ๋ก ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, Main ๋ฉ์๋๋ฅผ ์คํํ๊ฑฐ๋ ์๋ฒ๋ฅผ ๋ฐ๋ก ์คํํ์ง ์์๋ ๊ธฐ๋ฅ๋ณ๋ก ํ ์คํธ ์ฝ๋ ์์ฑํด์ ์คํ ์ํฌ ์ ์์
package com.sparta.springprepare.calculator;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorTest {
@Test // ํ
์คํธ ์ด๋
ธํ
์ด์
@DisplayName("๋ํ๊ธฐ ํ
์คํธ")
void test1() {
Calculator calculator = new Calculator();
Double result = calculator.operate(8, "+", 2);
System.out.println("result = "+result);
// Assertions๋ก ํ
์คํธ ํ์ธ
// Assertions.assertEquals(์์๊ฐ, ์ํ๊ฒฐ๊ณผ): ์์๊ฐ๊ณผ ์ํ๊ฒฐ๊ณผ๊ฐ ๋๋ฑํ์ง ๋น๊ต
Assertions.assertEquals(10, result);
}
@Test // ํ
์คํธ ์ด๋
ธํ
์ด์
@DisplayName("๋๋๊ธฐ ํ
์คํธ")
void test2() {
Calculator calculator = new Calculator();
Double result = calculator.operate(8, "/", 2);
System.out.println("result = "+result);
Assertions.assertEquals(4, result);
}
}
