๐ ์ค๋์ ํ์ต ํค์๋
- ํ ์คํธ์ฝ๋
๐ฅ ํ ์คํธ ๋ฐ๋ณตํ๊ธฐ
@RepeatedTest
: @RepeatedTest๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ํ ์คํธ ๋ฉ์๋๋ฅผ ๋ฐ๋ณตํ ์ ์์ต๋๋ค.
: name ์์ฑ์ ์ฌ์ฉํ์ฌ ๋ค์ด๋ฐ์ ํ ์ ์์ต๋๋ค.
: RepeatitionInfo ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ ํ์ฌ ๋ฐ๋ณต ํ์์ ์ด ํ์ ๊ฐ์ ํ์ธํ ์ ์์ต๋๋ค.
@RepeatedTest(value = 5, name = "๋ฐ๋ณต ํ
์คํธ {currentRepetition} / {totalRepetitions}")
void repeatTest(RepetitionInfo info) {
System.out.println("ํ
์คํธ ๋ฐ๋ณต : " + info.getCurrentRepetition() + " / " + info.getTotalRepetitions());
}
@ParameterizedTest
: @ParameterizedTest๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ ํ ์คํธํ ์ ์๋ ๋ฉ์๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
: @ValueSource(ints = {1, 2, 3, 4, 5, 6, 7, 8, 9})๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ ๋ฌ ํ ์ ์์ต๋๋ค.
- ์ ๋ฌ๋๋ ํ๋ผ๋ฏธํฐ ์ ๋งํผ ํ ์คํธ ๋ฉ์๋๊ฐ ์ํ๋ฉ๋๋ค.
- int, String ๋ฑ ์ฌ๋ฌ ํ์ ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
@DisplayName("ํ๋ผ๋ฏธํฐ ๊ฐ ํ์ฉํ์ฌ ํ
์คํธ ํ๊ธฐ")
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4, 5, 6, 7, 8, 9})
void parameterTest(int num) {
System.out.println("5 * num = " + 5 * num);
}
๐ฅ Assertions
- Calculator
public class Calculator {
public Double operate(double num1, String op, double num2) {
switch (op) {
case "*":
return num1 * num2;
case "/":
if (validateNum(num2)) {
return num1 / num2;
} else {
return null;
}
case "+":
return num1 + num2;
case "-":
return num1 - num2;
default:
throw new IllegalArgumentException("์๋ชป๋ ์ฐ์ฐ์์
๋๋ค.");
}
}
public boolean validateNum(double num) {
if (num == 0) {
return false;
} else {
return true;
}
}
}
- Assertions.assertEquals(expected, actual)
@Test
@DisplayName("assertEquals")
void test1() {
Double result = calculator.operate(5, "/", 2);
assertEquals(2.5, result);
}
@Test
@DisplayName("assertEquals - Supplier")
void test1_1() {
Double result = calculator.operate(5, "/", 0);
// ํ
์คํธ ์คํจ ์ ๋ฉ์์ง ์ถ๋ ฅ (new Supplier<String>())
assertEquals(2.5, result, () -> "์ฐ์ฐ์ ํน์ ๋ถ๋ชจ๊ฐ 0์ด ์๋์ง ํ์ธํด๋ณด์ธ์!");
}
@Test
@DisplayName("assertNotEquals")
void test1_2() {
Double result = calculator.operate(5, "/", 0);
assertNotEquals(2.5, result);
}
- assertEquals() ๋ฉ์๋๋ ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ์์๊ฐ์ ๋ฃ๊ณ ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฃ์ด์ค๋๋ค.
- ๋ ๊ฐ์ด ๋ค๋ฅด๋ฉด ํ ์คํธ์ ์คํจํจ.
- 3๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋๋ค์์ผ๋ก ๋ฉ์์ง๋ฅผ ๋ฃ์ผ๋ฉด ํ ์คํธ ์คํจ ์ ํด๋น ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํจ ( new Supplier<String>() )
- Assertions.assertTrue(boolean)
@Test
@DisplayName("assertTrue ์ assertFalse")
void test2() {
assertTrue(calculator.validateNum(9));
assertFalse(calculator.validateNum(0));
}
- assertTrue() ๋ฉ์๋๋ ํด๋น ํ๋ผ๋ฏธํฐ ๊ฐ์ด true์ธ์ง ํ์ํจ.
- Assertions.assertNotNull(actual)
@Test
@DisplayName("assertNotNull ๊ณผ assertNull")
void test3() {
Double result1 = calculator.operate(5, "/", 2);
assertNotNull(result1);
Double result2 = calculator.operate(5, "/", 0);
assertNull(result2);
}
- assertNotNull() ๋ฉ์๋๋ ํด๋น ํ๋ผ๋ฏธํฐ ๊ฐ์ด null์ด ์๋์ ํ์ธํจ.
- Assertions.assertThrows(expeatedType, executable)
@Test
@DisplayName("assertThrows")
void test4() {
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> calculator.operate(5, "?", 2));
assertEquals("์๋ชป๋ ์ฐ์ฐ์์
๋๋ค.", exception.getMessage());
}
- assertThrows() ๋ฉ์๋๋ ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ์์ํ๋ Exception ํด๋์ค ํ์ ์ ๋ฃ๊ณ ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ์คํ ์ฝ๋๋ฅผ ๋ฃ๋๋ค.
- ์คํ ์ฝ๋์ ๊ฒฐ๊ณผ๊ฐ ์์ํ ํด๋น ํด๋์ค์ ํ์ ์ด๋ผ๋ฉด ํ ์คํธ์ ์ฑ๊ณต
๐ ์ค๋์ ํ๊ณ
์ด๋ ต๋ค ํ ์คํธ์ฝ๋ ํ์ง๋ง ํ์ดํ