[java] JUnitParams를 이용하여 비즈니스 규칙 검증 로직 테스트 방법은 어떻게 되나요?

먼저 JUnitParams를 프로젝트에 추가해야 합니다. Maven의 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다:

<dependency>
    <groupId>pl.pragmatists</groupId>
    <artifactId>JUnitParams</artifactId>
    <version>1.1.1</version>
    <scope>test</scope>
</dependency>

Gradle을 사용한다면, build.gradle 파일에 다음과 같이 추가합니다:

testImplementation 'pl.pragmatists:JUnitParams:1.1.1'

이제 JUnitParams를 사용하여 비즈니스 규칙을 검증하기 위한 테스트 메서드를 작성할 수 있습니다. 예를 들어, 주문 시스템에서 할인 금액을 계산하는 로직을 테스트한다고 가정해봅시다.

다음은 JUnitParams를 사용하여 할인 금액을 계산하는 메서드를 테스트하는 코드입니다:

import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.assertEquals;

@RunWith(JUnitParamsRunner.class)
public class DiscountCalculatorTest {

    @Test
    @Parameters(method = "discountDataProvider")
    public void testCalculateDiscount(int orderAmount, int expectedDiscount) {
        DiscountCalculator calculator = new DiscountCalculator();
        int actualDiscount = calculator.calculateDiscount(orderAmount);
        assertEquals(expectedDiscount, actualDiscount);
    }

    private Object[] discountDataProvider() {
        return new Object[]{
                new Object[]{100, 10},
                new Object[]{200, 20},
                new Object[]{300, 30},
                // additional test cases...
        };
    }
}

@RunWith(JUnitParamsRunner.class) 애노테이션을 이용하여 JUnitParamsRunner를 실행하도록 설정하고, @Parameters 애노테이션을 이용하여 테스트 데이터를 제공하는 메서드를 지정합니다. discountDataProvider 메서드는 할인 금액을 계산하기 위한 테스트 데이터를 반환하는 역할을 합니다.

위의 예제에서는 주문 금액과 예상되는 할인 금액을 파라미터로 받는 testCalculateDiscount 메서드를 작성했습니다. JUnitParams는 discountDataProvider 메서드가 반환하는 테스트 데이터를 각각의 파라미터로 전달하여 여러번의 테스트를 수행합니다.

결과적으로, JUnitParams를 사용하여 비즈니스 규칙 검증 로직을 테스트할 수 있으며, 다양한 테스트 케이스를 한 번에 실행하거나 쉽게 추가할 수 있습니다. 이를 통해 코드의 신뢰성과 테스트 커버리지를 높일 수 있습니다.

참고자료: