๐ต java
JAVA | ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต - (1)
c0zi
2023. 8. 15. 18:55
๐งฎ ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต
์๊ตฌ์ฌํญ
• ๊ฐ๋จํ ์ฌ์น์ฐ์ฐ์ ํ ์ ์๋ค. โ๏ธ
• ์์๋ก๋ง ๊ณ์ฐํ ์ ์๋ค.
• ๋๋์ ์์ 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 ํด๋์ค๋ ์ฌ์น์ฐ์ฐ์ ๋ชจ๋ ์ํํ ์ ์๋๋ก ์์ ๊ฐ์ด ์์ฑํ๋ค.