Тесты Коина - DependencyResolutionException - PullRequest
0 голосов
/ 09 января 2019

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

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

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

Спасибо

...