Тесты Коина - DependencyResolutionException

У меня есть несколько тестовых классов с несколькими тестами в каждом классе. В каждом классе я хочу убедиться, что я получаю новые тестовые зависимости для каждого теста. Поэтому я готовлю свои тесты так:

    @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 в моих тестах? Я что-то упускаю или не использую Коин должным образом?

Я понимаю, что это больше вопрос обзора кода / рекомендации, чем реальная проблема, но я думаю, что это все еще может быть полезно для других.

Спасибо

0 ответов

Другие вопросы по тегам