상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Robolectric에서 SharedPreferences를 접근하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Robolectric은 안드로이드 애플리케이션의 유닛 테스트를 JVM 환경에서 실행할 수 있게 해주는 프레임워크로, 실제 디바이스나 에뮬레이터 없이도 안드로이드 API를 사용할 수 있게 해줍니다. SharedPreferences 또한 Robolectric에서 사용할 수 있는데, 접근 방법은 실제 안드로이드 환경과 아주 유사하지만, Robolectric이 내부적으로 인메모리 방식으로 동작하기 때문에 테스트가 빠르게 수행됩니다. Robolectric에서 SharedPreferences 접근하기 1. Context 얻기 Robolectric 테스트에서는 `ApplicationProvider.getApplicationContext()` 메서드를 이용해 테스트용 `Context`를 얻을 수 있습니다. ```java Context context = ApplicationProvider.getApplicationContext(); ``` 2. SharedPreferences 인스턴스 가져오기 `Context`의 `getSharedPreferences()` 메서드로 `SharedPreferences` 인스턴스를 얻을 수 있습니다. ```java SharedPreferences sharedPreferences = context.getSharedPreferences("test_prefs", Context.MODE_PRIVATE); ``` 3. 값 저장 및 읽기 일반 안드로이드 환경과 동일하게 `edit()`를 이용해 값을 저장하고, `getXXX` 메서드를 이용해 값을 읽습니다. ```java sharedPreferences.edit().putString("key", "value").commit(); String value = sharedPreferences.getString("key", null); ``` Robolectric에 특화된 점 - In-memory 동작 Robolectric은 SharedPreferences 작업을 실제 파일로 저장하지 않고 메모리 내에 저장하므로, 테스트 후 상태가 유지되지 않으며 빠른 실행이 가능합니다. - <a href='https://sangseek.com/sangseeks/State/ko'>State</a> Reset 각 테스트 실행 시 Robolectric이 `Context`와 SharedPreferences를 초기화하므로, 별도의 클린업 코드 없이 독립적인 테스트가 가능합니다. <a href='https://sangseek.com/sangseeks/예제 코드/ko'>예제 코드</a> (JUnit4 기준) ```java @RunWith(RobolectricTestRunner.class) public class SharedPreferencesTest { @Test public void testSharedPreferences() { Context context = ApplicationProvider.getApplicationContext(); SharedPreferences prefs = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE); // 값 저장 prefs.edit().putString("username", "roboUser").commit(); // 값 읽기 String username = prefs.getString("username", null); // 검증 assertEquals("roboUser", username); } } ``` 추가 팁 - `commit()` 대신 `apply()`를 호출해도 무방하며, Robolectric 내부적으로 즉시 적용됩니다. - `PreferenceManager.getDefaultSharedPreferences(context)`를 사용해 기본 SharedPreferences도 테스트할 수 있습니다. - Robolectric 버전에 따라 세부 동작이 다를 수 있으니, 사용 중인 Robolectric의 공식 문서나 GitHub 이슈를 참고하는 것이 좋습니다. --- 정리하자면, Robolectric에서 SharedPreferences를 접근할 때는 기본적인 안드로이드 방식과 동일하게 `ApplicationProvider.getApplicationContext()`를 통해 받은 `Context`에서 `getSharedPreferences()`를 호출해 사용하면 되고, Robolectric이 메모리 기반으로 동작하므로 테스트 실행이 빠르고 독립적입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기