단위 테스트를 제일 쉽고 빠르게 적용할 수 있는 부분은 helper class와 utility class
Utility Class 논쟁
헬퍼 클래스 예
public class StampCalculatorTestWithoutJUnit {
public static void main(String[] args) {
calculateStampCountTest();
}
private static void calculateStampCountTest() {
// given
int nowCount = 5;
int earned = 3;
// when
int actual = StampCalculator,calculateStampCount(nowCount, earned);
int expected = 7;
// then
System.out.println(expected == actual);
}
}
public class StampCalculator {
public static int calculateStampCount(int nowCount, int earned) {
return nowCount + earned;
}
public static int calculateEarnedStampCount(Order order) {
return order.getOrderCoffees().stream().
.map(orderCoffee::getQuantity)
.mapToInt(quantity -> quantity)
.sum();
}
}
-----------------
> 실행 결과
> false
Given-When-Then 표현 스타일 (BDD, Behavior Driven Development)
Assertion
JUnit
JUnit 기본 작성법
src/test
디렉토리 안에 작성src/test
디렉토리 만들어짐testImplementation >'org.springframework.boot:spring-boot-starter-test'
스타터 포함됨import static org.junit.jupiter.api.Assertions.assertEquals;
public class HelloJUnitTest {
@DisplayName("Hello JUnit Test") // 테스트 케이스 실행 시 실행 결과창에 표시되는 이름 지정
@Test
public void assertionTest() {
String expected = "Hello, JUnit";
String actual = "Hello, JUnit";
assertEquals(expected, actual); // 예상값과 실제값 비교 검증
}
}
JUnit Assertion Methods
테스트 케이스 실행 전, 후처리