我有多个测试类,每个类都有多个测试。在每个类中,我都想确保为每个测试获得新的测试依赖项。所以我准备我的测试是这样的:
@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 吗?
我意识到这更像是一个代码审查/建议问题,而不是一个真正的问题,但我认为这对其他人可能仍然有用。
谢谢