개인적으로 dagger 를 이용중에 androidTest 에서 OkHttp3IdlingResource 를 적용해야할 상황이 되어 잠시 뒤적 뒤적 거리곤 내린 결론
dagger 에서 okhttp client 는 @Singleton 으로 설정해둔 것을 전제로
MainActivity 에 okhttpclient 를 @inject 하고 이를 androidTest 에서 가져다가 OkHttp3IdlingResource create 하면 되지 않을까 싶었는데
일단 된다.
소스로 보자면 먼저 MainActivity 에는 아래와 같이 선언해주고
class MainActivity : BaseDaggerActivity<MainActivityBinding, MainViewModel>() {
// ..
////////////////////////////////////////////////////////////////////////////////////
//
// TEST
//
////////////////////////////////////////////////////////////////////////////////////
// https://github.com/chiuki/espresso-samples/tree/master/idling-resource-okhttp
@VisibleForTesting
@Inject lateinit var okhttp: OkHttpClient
}
네트워킹 작업이 필요한 테스트 클래스에서 아래와 같이 넣어주었더니 잘 작동하긴 했는데
요즘 내 노트북이 살짝 이상한지라.. =_ = 내일 다시 돌려보고 검토 해봐야할 듯 자꾸 되던게 안되고 안되던게 되는 기이한 현상... ;ㅁ;
디렉토리를 복사하고 수정했는데 원래 자리가 수정되었다던지.. 이런 기묘한 일이 털썩. OTL
@RunWith(AndroidJUnit4::class)
class SearchTest {
private var mIdlingResource: IdlingResource? = null
@Before
fun registerIdlingResource() {
val activityScenario = ActivityScenario.launch(MainActivity::class.java)
activityScenario.onActivity { activity ->
mIdlingResource = OkHttp3IdlingResource.create("okhttp", activity.okhttp)
}
}
@Test
fun searchFragmentTest() {
mIdlingResource?.let { IdlingRegistry.getInstance().register(it) }
searchIcon().perform(click())
dibsIcon(0).perform(click())
dibsIcon(1).perform(click())
mIdlingResource?.let { IdlingRegistry.getInstance().unregister(it) }
// ....
}
// ....
}
dagger 에서 okhttp client 는 @Singleton 으로 설정해둔 것을 전제로
MainActivity 에 okhttpclient 를 @inject 하고 이를 androidTest 에서 가져다가 OkHttp3IdlingResource create 하면 되지 않을까 싶었는데
일단 된다.
소스로 보자면 먼저 MainActivity 에는 아래와 같이 선언해주고
class MainActivity : BaseDaggerActivity<MainActivityBinding, MainViewModel>() {
// ..
////////////////////////////////////////////////////////////////////////////////////
//
// TEST
//
////////////////////////////////////////////////////////////////////////////////////
// https://github.com/chiuki/espresso-samples/tree/master/idling-resource-okhttp
@VisibleForTesting
@Inject lateinit var okhttp: OkHttpClient
}
네트워킹 작업이 필요한 테스트 클래스에서 아래와 같이 넣어주었더니 잘 작동하긴 했는데
요즘 내 노트북이 살짝 이상한지라.. =_ = 내일 다시 돌려보고 검토 해봐야할 듯 자꾸 되던게 안되고 안되던게 되는 기이한 현상... ;ㅁ;
디렉토리를 복사하고 수정했는데 원래 자리가 수정되었다던지.. 이런 기묘한 일이 털썩. OTL
@RunWith(AndroidJUnit4::class)
class SearchTest {
private var mIdlingResource: IdlingResource? = null
@Before
fun registerIdlingResource() {
val activityScenario = ActivityScenario.launch(MainActivity::class.java)
activityScenario.onActivity { activity ->
mIdlingResource = OkHttp3IdlingResource.create("okhttp", activity.okhttp)
}
}
@Test
fun searchFragmentTest() {
mIdlingResource?.let { IdlingRegistry.getInstance().register(it) }
searchIcon().perform(click())
dibsIcon(0).perform(click())
dibsIcon(1).perform(click())
mIdlingResource?.let { IdlingRegistry.getInstance().unregister(it) }
// ....
}
// ....
}
'Android' 카테고리의 다른 글
list 를 map 으로 변경해주는 associateBy (0) | 2019.07.31 |
---|---|
junit 에서 livedata 를 변화를 감지하기 위한 inline fun (0) | 2019.07.31 |
dagger 에서 koin 으로 convert (0) | 2019.06.12 |
android with bamboo (0) | 2019.05.31 |
koin 에서 viewmodel 을 대상 클래스를 generics 로 전달 받기 ? (0) | 2019.05.22 |