본문 바로가기

Spring

Junit5에서 parmeter를 이용한 Test실행하기

 

Junit4와 Junit5에서는 parameter를 이용한 Test를 실행할 때 조금 다르다.

 

Junit 4 : JunitParams 이용

@RunWith(JunitParams.class)
public class EventTest {
	@Test
    @Parameters
    public void testFree(int basePrice, int maxPrice, boolean isFree) {
        Event event = Event.builder()
                .basePrice(basePrice)
                .maxPrice(maxPrice)
                .build();

        event.update();

        assertThat(event.isFree()).isEqualTo(isFree);
    }

    private Object[] parametersForTestFree() {
        return new Object[]{
                new Object[]{0, 0, true},
                new Object[]{100, 0, false},
                new Object[]{0, 100, false},
                new Object[]{100, 200, false}
        };
    }
}

Junit5 : @ParameterizedTest 사용

@ParameterizedTest
@MethodSource("parametersForTestFree")
public void testFree(int basePrice, int maxPrice, boolean isFree) {
    Event event = Event.builder()
            .basePrice(basePrice)
            .maxPrice(maxPrice)
            .build();

    event.update();

    assertThat(event.isFree()).isEqualTo(isFree);
}

static Object[] parametersForTestFree() {
    return new Object[]{
            new Object[]{0, 0, true},
            new Object[]{100, 0, false},
            new Object[]{0, 100, false},
            new Object[]{100, 200, false}
    };
}