首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖Activity.oncreate中使用的测试依赖项

覆盖Activity.oncreate中使用的测试依赖项
EN

Stack Overflow用户
提问于 2020-07-24 17:12:03
回答 1查看 37关注 0票数 0

我有一个在onCreate()中检查根设备的splash活动。模拟rootChecker不起作用。它看起来像是活动中的loadingModule导致的。我不想在应用程序中加载它,因为它会不必要地将它保存在内存中。如何修复它?

代码语言:javascript
复制
object SplashModule{
    var module= module{
        single { RootBeer(getAppContext()) }
    }
}

class SplashActivity : KoinComponent {
    @VisibleForTesting
    val rootChecker:RootBeer by lazy { get<RootBeer>() }
    
    override fun onCreate(savedInstanceState: Bundle?) {
        ...
        loadKoinModules(SplashModule.module)
        if(rootChecker.isRooted) {
            //show error and finish
        }
    }
}
代码语言:javascript
复制
@RunWith(AndroidJUnit4::class)
class SplashActivityTest : KoinTest {

    @JvmField
    @Rule
    val activityTestRule = IntentsTestRule(SplashActivity::class.java, false, false)

    @get:Rule
    val mockProvider = MockProviderRule.create { clazz ->
        Mockito.mock(clazz.java)
    }

    @Before
    fun setup() {
        stopKoin()
        startKoin { loadKoinModules(arrayListOf(TestModule().applicationModule, module)) }
    }

    @After
    fun after() {
        unregisterIdlingResource()
        stopKoin()
    }
    val module= module(override = true){
        single { Mockito.mock(RootBeer(getAppContext())::class.java) }
    }

    @Test
    fun testNonRooted() {
        declareMock<RootBeer> {
            given(isRooted).willReturn(false)
        }
        val launchedActivity = activityTestRule.launchActivity(Intent())
        //test here
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-07-28 00:08:42

我认为您需要为koin声明一个模拟提供程序。Koin本身不知道如何在使用declareMock时模拟事物。你必须告诉koin你想如何模拟你的对象,在你的例子中使用的是Mockito的mock函数:

代码语言:javascript
复制
    @get:Rule
    val mockProvider = MockProviderRule.create { clazz ->
        Mockito.mock(clazz.java)
    }

并且不再需要以下内容:

代码语言:javascript
复制
    val module= module(override = true){
        single { Mockito.mock(RootBeer(getAppContext())::class.java) }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63070512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档