[java] Mockito와 PowerMock의 차이점은 무엇인가?
  1. 목적:
    • Mockito: Mockito는 단일 모의 객체를 만들기 위해 사용됩니다. 주로 의존성 주입(Dependency Injection)을 테스트하는데 사용됩니다.
    • PowerMock: PowerMock은 Mockito의 확장 프레임워크입니다. Mocking 뿐만 아니라 클래스 로딩, 정적 메서드 호출 등 Java의 일부 낮은 수준 기능도 지원합니다. 주로 코드 커버리지를 높이고 테스트할 수 없는 코드도 테스트하는 데 사용됩니다.
  2. 모의 객체 생성 방식:
    • Mockito: Mockito는 인터페이스, 추상 클래스 및 구체 클래스의 인스턴스를 모의 객체로 만들 수 있습니다.
    • PowerMock: PowerMock은 Mockito의 기능을 확장하여 인스턴스화 할 수 없는 클래스, 정적 메서드 등에 대한 모의 객체를 생성할 수 있습니다.
  3. 테스트 환경:
    • Mockito: Mockito는 단위 테스트(runAsJUnit) 및 테스트 프레임워크(runWith)와 함께 사용됩니다.
    • PowerMock: PowerMock은 Mockito와 함께 JUnit, TestNG, JMockit 등 다양한 테스트 프레임워크를 지원합니다.
  4. 성능:
    • Mockito: Mockito는 가볍고 간단한 프레임워크이며, 실제 실행 코드에 큰 영향을 주지 않습니다.
    • PowerMock: PowerMock은 Java 클래스 로딩 및 변형 기능을 사용하므로 성능에 미치는 영향이 있을 수 있습니다.

이들 프레임워크를 선택할 때는 프로젝트의 요구 사항과 목표에 따라 결정해야 합니다. 작은 규모의 프로젝트이고 단순한 의존성 주입 테스트만 필요하다면 Mockito가 적합할 수 있습니다. 그러나 테스트할 수 없는 코드를 포함하는 복잡한 시나리오를 다루거나 클래스 로딩이나 정적 메서드 호출과 같은 기능을 테스트해야 하는 경우 PowerMock을 고려해 볼 수 있습니다.