본문 바로가기

개발/Java & Spring

[기록] JUnit5 자주사용하는 코드 모음

JUnit5 를 주로 사용하는데 파라미터 관련 소스는 계속 안사용하면 잊어버려서 기록 ! 

 

@MethodSource를 사용해서 배열을 파라미터로 받는 테스트  

딱히 expected 가 필요하진 않지만,, 

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.*;

import java.util.stream.Stream;

import static org.assertj.core.api.Assertions.assertThat;

class MergeSortTest {


    @DisplayName("정수배열을 입력하면 정렬된다")
    @MethodSource("intArray")
    @ParameterizedTest
    void mergesort를수행하면_오름차순정렬된다(int[] input, int[] expected ) {
        assertThat(MergeSort.mergeSort(input)).isSorted();
    }

    static Stream<Arguments> intArray(){
        return Stream.of(
                Arguments.of(new int[]{1,2,3,4,5},new int[]{1,2,3,4,5}),
                Arguments.of(new int[]{5,4,3,2,1},new int[]{1,2,3,4,5}),
                Arguments.of(new int[]{5,1,3,2,4},new int[]{1,2,3,4,5}),
                Arguments.of(new int[]{5,1,3,2,},new int[]{1,2,3,5})
        );
    }



}

 

 

Enum Converting 도 잘 해준다

    @DisplayName("symbol 에 따른 Operation이 나오는지")
    @MethodSource(value = "operationBySymbol")
    @ParameterizedTest
    void test(String symbol, Operation operation) {
        assertThat(fromString(symbol)).isEqualTo(Optional.of(operation));
    }

    static Stream<Arguments> operationBySymbol() {
        return Stream.of(
                Arguments.of("+", Operation.PLUS),
                Arguments.of("-", Operation.MINUS),
                Arguments.of("*", Operation.TIMES),
                Arguments.of("/", Operation.DIVIDE));
    }