1

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

    @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 吗?

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

谢谢

4

0 回答 0