微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在单元测试Android中测试多模块匕首依赖

如何解决在单元测试Android中测试多模块匕首依赖

这是我的活动,我的AppModule Test活动正在调用一个模块的依赖项。

class MyPageActivityTest {

    lateinit var myPageActivity: MyPageActivity
    @RelaxedMockK
    lateinit var context: Context
    lateinit var mBTest: BComponentTest
    lateinit var mATest: AComponentTest
    @Before
    fun setUp() {
        MockKAnnotations.init(this,true)


        mBTest = DaggerBComponentTest.builder()
            .buildBModule(BModuleTest(context)).build()

         mATest= DaggerAComponentTest
             .builder()
             .buildAppModule(AModuleTest(context))
             .buildBTestComponent(mBTest)
             .build()

        myPageActivity =
            Robolectric.buildActivity(MyPageActivity::class.java)
                .create()
                .resume()
                .get()
    }

    @Test
    fun test(){
        myPageActivity.onBackpressed()
    }
}

这是我的B组件:

@Component(modules = [BModuleTest::class])
interface BComponentTest {

    @Component.Builder
    interface Builder {
        fun buildBModule(bModule: BModuleTest): Builder

        @BindsInstance
        fun build(): BComponentTest
    }
}

现在,这是我的App模块的测试依赖项组件,该组件具有其他模块(在这里为BComponentTest)作为测试模块的依赖项。

@Component(modules = [AppModuleTest::class],dependencies = [BComponentTest::class] )
interface AComponentTest  {
    @Component.Builder
    interface Builder {
        fun buildBTestComponent(mBComponent: BComponentTest):Builder
        fun buildAppModule(appModule: AppModuleTest): Builder
        fun build(): AComponentTest
    }
}

运行相同活动的测试时出现错误


error: cannot find symbol @dagger.Component(modules = {com.x.x.di.modules.AppModuleTest.class},dependencies = {BComponentTest.class})
                                                                                                             ^   symbol: class AComponentTest

AND

error: [ComponentProcessor:MiscError] dagger.internal.codegen.ComponentProcessor was unable to process this interface because not all of its dependencies Could be resolved. Check for compilation errors or a circular dependency with generated code.
public abstract interface AComponentTest {

其他所有测试用例都可以正常工作,但是当涉及到构建“基础到从属模块的测试匕首”时,则无法正常工作。

任何人都可以建议我错了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。