๐งฎ ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต
์๊ตฌ์ฌํญ
• ๊ฐ๋จํ ์ฌ์น์ฐ์ฐ์ ํ ์ ์๋ค. โ๏ธ
• ์์๋ก๋ง ๊ณ์ฐํ ์ ์๋ค.
• ๋๋์ ์์ 0์ ๋๋๋ ๊ฒฝ์ฐ IllegalArgument ์์ธ๋ฅผ ๋ฐ์์ํจ๋ค.
• MVCํจํด(Model-View-Controller) ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ๋ค.
1. ๋ง์ ๋บ์ ์ฐ์ฐ ์ํ
public class CalculatorTest {
// 1 + 2 ---> Calculator
// 3 ---<
@DisplayName("๋ง์
์ฐ์ฐ์ ์ํํ๋ค.")
@Test
void additionTest() {
int result = Calculator.calculate(1, "+", 2);
assertThat(result).isEqualTo(3);
}
@DisplayName("๋บ์
์ฐ์ฐ์ ์ํํ๋ค")
@Test
void subtractionTest() {
int result = Calculator.calculate(2, "-", 1);
assertThat(result).isEqualTo(1);
}
}
public class Calculator {
public static int calculate(int operand1, String operator, int operand2) {
if ("+".equals(operator)) {
return operand1 + operand2;
} else if ("-".equals(operator)) {
return operand1 - operand2;
}
return 0;
}
}
๋ค์๊ณผ ๊ฐ์ด ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํ ๋ค Make Test Pass๋ฅผ ์ํด Calculator๋ฅผ ์๋ง๊ฒ ์์ฑํด์ค๋ค.
2. ์ฌ์น ์ฐ์ฐ ํ๋ฒ์ ํ ์คํธํ๊ธฐ
public class CalculatorTest {
@DisplayName("์ฌ์น ์ฐ์ฐ์ ์ํํ๋ค.")
@ParameterizedTest
@MethodSource("fomulaAndResult")
void calculatorTest(int operand1, String operator, int operand2, int expect) {
int result = Calculator.calculate(operand1, operator, operand2);
assertThat(result).isEqualTo(expect);
}
private static Stream<Arguments> fomulaAndResult() {
return Stream.of(
arguments(1, "+", 2, 3),
arguments(1, "-", 2, -1),
arguments(1, "*", 2, 2),
arguments(1, "/", 1, 1)
);
}
}
public class Calculator {
public static int calculate(int operand1, String operator, int operand2) {
if ("+".equals(operator)) {
return operand1 + operand2;
} else if ("-".equals(operator)) {
return operand1 - operand2;
} else if ("*".equals(operator)) {
return operand1 * operand2;
} else if ("/".equals(operator)) {
return operand1 / operand2;
}
return 0;
}
}
์ฌ์น์ฐ์ฐ์ ํ๋ฒ์ ํ ์คํธํ๊ธฐ ์ํด์๋ stream์ ์ด์ฉํ๋ค. formulaAndResult() ๋ฉ์๋๋ ์ฌ์น์ฐ์ฐ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ค๊ณผ ๊ธฐ๋๊ฐ์ returnํ๋ค. @MethodSource ์๋ํ ์ด์ ์ ์ด ๋ฉ์๋์ ๋ฆฌํด๊ฐ๋ค์ calculatorTest() ๋ฉ์๋์ ๋์ ํ๋๋ก ํ๋ค.
calculator ํด๋์ค๋ ์ฌ์น์ฐ์ฐ์ ๋ชจ๋ ์ํํ ์ ์๋๋ก ์์ ๊ฐ์ด ์์ฑํ๋ค.
'๐ต java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA | ํ์ ๊ณ์ฐ๊ธฐ ์ค์ต - (1) (0) | 2023.09.04 |
---|---|
JAVA | ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต - (2) (0) | 2023.08.19 |
JAVA | STREAM์ด๋ ? (์ฌ์ฉ๋ฒ, ๋ฐฑ์ค ๋ฌธ์ ๊น์ง ๊ฐ์ด ํ์ด๋ณด๊ธฐ) (5) | 2023.08.10 |
JAVA | JPA Repository์ ์ฌ์ฉ๋ฒ๊ณผ ๋ฉ์๋ (0) | 2023.07.14 |
JAVA | JPA ์์๋ณด๊ธฐ (JPA, JDBC, Hibernate & JPA) (0) | 2023.07.10 |