initMocks()와 MockitoAnnotations.openMocks() 모두 Mockito 라이브러리에서 목 객체를 초기화하는 데 사용된다.
하지만 initMocks()는 MockitoJUnitRunner나 MockitoRule을 사용하지 않는 경우에 사용되는 정적 메소드다. 이 방법은 일부 개발자들에게 어색하게 느껴질 수 있으며, 실제 테스트 중에 목 객체를 초기화하는 것이 어디서 발생하는지 명확하지 않을 수 있다.
MockitoAnnotations.openMocks()는 주로 @RunWith(MockitoJUnitRunner::class)와 같은 애노테이션 없이 JUnit 5에서 사용된다. openMocks()는 테스트 클래스 내에서 @Mock와 @InjectMocks 애노테이션이 붙은 필드를 자동으로 인식하여 Mockito가 목 객체를 초기화하고 필드에 할당하는 데 사용된다. 또한 openMocks()는 목 객체 초기화 중에 발생하는 오류를 발견하기 쉽게 한다.
따라서, initMocks() 대신 MockitoAnnotations.openMocks()를 사용하는 것이 좋으며 initMocks는 이미 deprecated 되었다.