Spring/Test-Driven Develop

[Spring] java private 메소드 테스트 코드 작성하기

민돌v 2022. 8. 24. 01:03

 

 

Junit 을 사용해서 유닛테스트를 작성할 때,

private 접근제어자로 선언된 메서드가 반환하는 값을 테스트 하고 싶었습니다

 


 

ex) Private Method

public test {
    private String getString(final String name, final int age) {
        return name + age;
    }
}

 

 

 

여러 방법이 있었지만, 저는 간단하게 Spring Framework에서는지원해주는 ReflectionTestUtils를 사용해주었습니다

@Test
@DisplayName("private 메소드 접근하기")
void fillDate_continuity() {
    //given
    String name = "test";
    int age = 5;

    //when
    final String result = ReflectionTestUtils.invokeMethod(test,
        "getString", name, age);
        
    //then
    assertThat(result).isEquals(name+age);
    
    }
}

 

👏 RefelctionTestUtils 를 사용해서 private 메소드 호출은 invokeMethod ( 클래스, 메소드명, 파라미터 ...) 으로 호출가능!

 

 

 

 

 


*참고