상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Robolectric에서 Mock 객체를 생성하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Robolectric은 안드로이드 유닛 테스트를 위해 안드로이드 프레임워크 동작을 JVM 환경에서 흉내 내는 라이브러리입니다. 하지만 Robolectric 자체는 Mock 객체를 생성하는 기능을 제공하지 않습니다. 대신, Mockito, MockK 같은 목 라이브러리와 함께 사용하여 Mock 객체를 만듭니다. Robolectric 테스트에서 Mock 객체를 생성하는 기본적인 방법은 다음과 같습니다. 1. Mockito 의존성 추가 먼저 build.gradle에 Mockito 의존성을 추가해야 합니다. 예를 들어: ```gradle testImplementation 'org.mockito:mockito-core:4.+' testImplementation "org.robolectric:robolectric:4.+" ``` Mockito Android용인 mockito-android 대신 mockito-core를 사용하세요. Robolectric 테스트는 JVM 환경에서 수행되므로 mockito-core가 적합합니다. 2. 테스트 클래스에서 Mock 객체 생성 Mock 생성은 Mockito.mock()이나 @Mock 애노테이션을 사용할 수 있습니다. - Mockito.mock() 사용: ```java import static org.mockito.Mockito.mock; public class ExampleTest { @Test public void testSomething() { <a href='https://sangseek.com/sangseeks/MyClass/ko'>MyClass</a> myMock = mock(MyClass.class); // myMock 메서드 동작 설정 및 검증 수행 } } ``` - @Mock 및 MockitoAnnotations.initMocks() 또는 MockitoAnnotations.openMocks() 사용: ```java import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.junit.Before; public class ExampleTest { @Mock MyClass myMock; @Before public void setup() { MockitoAnnotations.openMocks(this); } @Test public void testSomething() { // myMock 사용 } } ``` 3. Robolectric 환경에서의 주의사항 - Robolectric 테스트에서는 안드로이드 컴포넌트를 직접 생성하여 활용할 수 있지만, 내부 의존성이 복잡한 경우 Mock 객체로 대체하면 테스트가 더 단순해집니다. - Mockito를 사용할 때, final 클래스나 final 메서드는 모킹이 안 될 수 있으므로 mockito-inline 을 추가로 설정할 수 있습니다. - Kotlin 사용 시에는 MockK를 대신 사용할 수 있고, Robolectric 테스트 내에서도 MockK가 잘 동작합니다. 4. 예시: Activity 내 의존성 Mock하기 ```java @RunWith(RobolectricTestRunner.class) public class MainActivityTest { @Mock SomeDependency mockDependency; @Before public void setUp() { MockitoAnnotations.openMocks(this); } @Test public void testActivityBehavior() { MainActivity activity = Robolectric.buildActivity(MainActivity.class).create().get(); activity.setDependency(mockDependency); when(mockDependency.doSomething()).thenReturn("Mocked Result"); String result = activity.callDependency(); assertEquals("Mocked Result", result); } } ``` 위 예제처럼 Robolectric으로 Activity를 생성하고, 내부 의존성을 Mockito Mock 객체로 주입하여 테스트할 수 있습니다. 요약하면, Robolectric은 안드로이드 컴포넌트의 동작을 JVM 환경에서 흉내 내는 역할을 하며 Mock 객체 생성은 Mockito(혹은 MockK) 같은 별도 Mock 라이브러리를 활용하여 만듭니다. 따라서 Robolectric 테스트에서 Mock 객체를 만들고 싶다면 Mockito.mock() 또는 @Mock 애노테이션 같이 Mockito의 표준 방식을 그대로 사용하면 됩니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기