-
stackoverflow 번역하기 :: static 메소드를 mocking 할 수 없는 이유Java/Basics 2021. 5. 19. 02:56
Link
https://stackoverflow.com/questions/4482315/why-doesnt-mockito-mock-static-methods
Question(발번역 주의)
Static method는 왜 mocking 하기 어려울까?
그리고 PowerMock을 사용하면 static method를 mocking할 수 있는데, Mockito는 왜 불가능할까?
Answer(발번역 주의)
Mock 라이브러리는 런타임에 인터페이스를 구현하거나 해당 클래스를 상속하여 Mock 객체를 생성한다. 그런데 두 방법 모두 static method엔 작동하지 않는다. 왜냐하면 static method는 상속하거나 구현해서 사용할 수 없기 때문이다. static method를 mocking하는 유일한 방법은 런타임때 해당 클래스의 바이트코드를 수정하여 mocking하는 것인데, 이 방법은 꽤 복잡하기 때문에 추천하지 않는다.
PowerMock은 mock 객체 라이브러리가 아니다. PowerMock은 다른 라이브러리에 static 요소를 mocking 하는 기능을 덧붙일 뿐이다. 보통 PowerMock과 Mockito(mock 객체 라이브러리)을 같이 사용한다.
'Java > Basics' 카테고리의 다른 글
케이스 네이밍 컨벤션 (0) 2021.07.25 객체지향 5대 원칙 :: SOLID 원칙 (0) 2021.07.18 유용한 JVM 명령어 모음 (0) 2020.10.01 와일드카드 ? vs 정규 타입 매개변수 T (0) 2020.07.22 Java Thread(with Multi Thread) (0) 2020.06.21 댓글