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