Koin测试-DependencyResolutionException

时间:2019-01-09 15:56:43

标签: android unit-testing koin

我有多个测试类别,每个类别中都有多个测试。 在每个类中,我想确保每个测试都获得新的测试依赖项。所以我准备这样的测试:

    @Before
fun initTest() {
    loadKoinModules(listOf(module {
        scope(TEST_SCOPE, override = true) { Dependency1() }
        scope(TEST_SCOPE, override = true) { Dependency2() }
    }))
    getKoin().createScope(TEST_SCOPE)
}

@After
fun shutdown() {
    getKoin().getScope(TEST_SCOPE).close()
}

当我仅运行特定测试类中的测试时,它会很好地工作。

但是当我同时运行所有测试时,如果多个测试类在其模块中具有相同的依赖项,则会得到如下异常:

org.koin.error.DependencyResolutionException: Multiple definitions found - Koin can't choose between :
Scope [name='Dependency2',class='package.Dependency2']
Scope [name='Dependency2',class='package.Dependency2']
Check your modules definition, use inner modules visibility or definition names.

因此,我通过在关闭方法的末尾简单调用stopKoin()来解决此问题。

到目前为止,我还没有注意到我的测试运行速度要慢得多。所以基本上我的问题是:这是在测试中使用Koin的首选方法吗?我是否缺少某些东西或没有正确使用Koin?

我意识到这不是真正的问题,更多的是代码审查/建议问题,但我认为这可能对其他人仍然有用。

谢谢

0 个答案:

没有答案